1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-05-17 01:17:29 +02:00

test: move tests from cypress to rtl (#6987)

This commit is contained in:
Mateusz Kwasniewski 2024-05-07 09:03:40 +02:00 committed by GitHub
parent 913f81b40c
commit a45be8d10c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 71 additions and 98 deletions

View File

@ -10,7 +10,6 @@ jobs:
- feature/feature.spec.ts - feature/feature.spec.ts
- groups/groups.spec.ts - groups/groups.spec.ts
- projects/access.spec.ts - projects/access.spec.ts
- projects/overview.spec.ts
- segments/segments.spec.ts - segments/segments.spec.ts
steps: steps:
- name: Dump GitHub context - name: Dump GitHub context

View File

@ -1,94 +0,0 @@
///<reference path="../../global.d.ts" />
import {
BATCH_ACTIONS_BAR,
MORE_BATCH_ACTIONS,
SEARCH_INPUT,
//@ts-ignore
} from '../../../src/utils/testIds';
describe('project overview', () => {
const randomId = String(Math.random()).split('.')[1];
const featureTogglePrefix = 'unleash-e2e-project-overview';
const featureToggleName = `${featureTogglePrefix}-${randomId}`;
const projectName = `unleash-e2e-project-overview-${randomId}`;
const baseUrl = Cypress.config().baseUrl;
const selectAll = '[title="Select all rows"] input[type="checkbox"]';
before(() => {
cy.runBefore();
cy.login_UI();
cy.createProject_API(projectName);
});
after(() => {
cy.request({
method: 'DELETE',
url: `${baseUrl}/api/admin/projects/${projectName}/features/${featureToggleName}-A`,
failOnStatusCode: false,
});
cy.request({
method: 'DELETE',
url: `${baseUrl}/api/admin/projects/${projectName}/features/${featureToggleName}-B`,
failOnStatusCode: false,
});
cy.request({
method: 'DELETE',
url: `${baseUrl}/api/admin/archive/${featureToggleName}-A`,
});
cy.request({
method: 'DELETE',
url: `${baseUrl}/api/admin/archive/${featureToggleName}-B`,
});
cy.deleteProject_API(projectName);
});
it('can mark selected togggles as stale', () => {
cy.login_UI();
cy.visit(`/projects/${projectName}`);
cy.viewport(1920, 1080);
cy.get(`[data-testid="${SEARCH_INPUT}"]`).as('search').click();
cy.get('@search').type(featureToggleName);
cy.get('body').type('{esc}');
cy.get('table tbody tr').should((elements) => {
expect(elements).to.have.length.at.least(2);
});
cy.get(selectAll).click();
cy.get(`[data-testid="${MORE_BATCH_ACTIONS}"]`).click();
cy.get('[role="menuitem"]').contains('Mark as stale').click();
cy.visit(`/projects/${projectName}/features/${featureToggleName}-A`);
cy.get('[title="Feature toggle is deprecated."]').should('exist');
});
it('can archive selected togggles', () => {
cy.login_UI();
cy.visit(`/projects/${projectName}`);
cy.viewport(1920, 1080);
cy.get(`[data-testid="${SEARCH_INPUT}"]`).as('search').click();
cy.get('@search').type(featureToggleName);
cy.get('body').type('{esc}');
cy.get('table tbody tr').should((elements) => {
expect(elements).to.have.length.at.least(2);
});
cy.get(selectAll).click();
// Ensure button is enabled
cy.get(`[data-testid=${BATCH_ACTIONS_BAR}] button`)
.contains('Archive')
.should('not.have.attr', 'disabled');
// Separate click action
cy.get(`[data-testid=${BATCH_ACTIONS_BAR}] button`)
.contains('Archive')
.click();
cy.get('p')
.contains('Are you sure you want to archive ')
.should('exist');
cy.get('button').contains('Archive toggles').click();
cy.get('table tbody tr').should('have.length', 0);
});
});

View File

@ -8,9 +8,6 @@ const server = testServerSetup();
test('Display extended daily metrics', async () => { test('Display extended daily metrics', async () => {
testServerRoute(server, '/api/admin/ui-config', { testServerRoute(server, '/api/admin/ui-config', {
flags: {
extendedUsageMetricsUI: true,
},
versionInfo: { versionInfo: {
current: { oss: 'irrelevant', enterprise: 'some value' }, current: { oss: 'irrelevant', enterprise: 'some value' },
}, },

View File

@ -0,0 +1,71 @@
import { render } from 'utils/testRenderer';
import { screen, waitFor } from '@testing-library/react';
import { ProjectFeaturesBatchActions } from './ProjectFeaturesBatchActions';
import { DELETE_FEATURE } from 'component/providers/AccessProvider/permissions';
import { testServerRoute, testServerSetup } from 'utils/testServer';
const server = testServerSetup();
const setupApi = () => {
testServerRoute(server, '/api/admin/projects/default/stale', {}, 'post');
testServerRoute(server, '/api/admin/ui-config', {});
testServerRoute(
server,
'/api/admin/projects/default/archive/validate',
{ hasDeletedDependencies: false, parentsWithChildFeatures: [] },
'post',
);
};
test('batch archive', async () => {
setupApi();
render(
<ProjectFeaturesBatchActions
projectId='default'
onChange={() => {}}
onResetSelection={() => {}}
selectedIds={['featureA', 'featureB']}
data={[]}
/>,
{ permissions: [{ permission: DELETE_FEATURE }] },
);
const archiveButton = screen.getByText('Archive');
expect(archiveButton).toBeEnabled();
archiveButton.click();
screen.getByText('Archive feature toggles');
screen.getByText('featureA');
screen.getByText('featureB');
});
test('batch mark as stale', async () => {
setupApi();
let onChangeCalled = false;
render(
<ProjectFeaturesBatchActions
projectId='default'
onChange={() => {
onChangeCalled = true;
}}
onResetSelection={() => {}}
selectedIds={['featureA', 'featureB']}
data={[
{ name: 'featureA', stale: false },
{ name: 'featureB', stale: false },
]}
/>,
);
const moreActions = screen.getByTitle('More bulk actions');
moreActions.click();
const markAsStale = await screen.findByText('Mark as stale');
expect(markAsStale).toBeEnabled();
markAsStale.click();
await waitFor(() => {
expect(onChangeCalled).toBe(true);
});
});