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:
parent
913f81b40c
commit
a45be8d10c
1
.github/workflows/e2e.frontend.yaml
vendored
1
.github/workflows/e2e.frontend.yaml
vendored
@ -10,7 +10,6 @@ jobs:
|
||||
- feature/feature.spec.ts
|
||||
- groups/groups.spec.ts
|
||||
- projects/access.spec.ts
|
||||
- projects/overview.spec.ts
|
||||
- segments/segments.spec.ts
|
||||
steps:
|
||||
- name: Dump GitHub context
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
@ -8,9 +8,6 @@ const server = testServerSetup();
|
||||
|
||||
test('Display extended daily metrics', async () => {
|
||||
testServerRoute(server, '/api/admin/ui-config', {
|
||||
flags: {
|
||||
extendedUsageMetricsUI: true,
|
||||
},
|
||||
versionInfo: {
|
||||
current: { oss: 'irrelevant', enterprise: 'some value' },
|
||||
},
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user