2023-04-04 10:46:28 +02:00
|
|
|
///<reference path="../../global.d.ts" />
|
2023-03-29 13:47:12 +02:00
|
|
|
import {
|
|
|
|
BATCH_ACTIONS_BAR,
|
|
|
|
BATCH_SELECT,
|
|
|
|
BATCH_SELECTED_COUNT,
|
|
|
|
MORE_BATCH_ACTIONS,
|
|
|
|
SEARCH_INPUT,
|
2023-04-04 10:46:28 +02:00
|
|
|
//@ts-ignore
|
2023-03-29 13:47:12 +02:00
|
|
|
} from '../../../src/utils/testIds';
|
|
|
|
|
|
|
|
describe('project overview', () => {
|
2023-04-05 13:20:58 +02:00
|
|
|
const randomId = String(Math.random()).split('.')[1];
|
|
|
|
const featureTogglePrefix = 'unleash-e2e-project-overview';
|
|
|
|
const featureToggleName = `${featureTogglePrefix}-${randomId}`;
|
|
|
|
const baseUrl = Cypress.config().baseUrl;
|
|
|
|
const selectAll =
|
|
|
|
'[title="Toggle All Rows Selected"] input[type="checkbox"]';
|
|
|
|
|
2023-03-29 13:47:12 +02:00
|
|
|
before(() => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.runBefore();
|
2023-03-29 13:47:12 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
after(() => {
|
|
|
|
cy.request({
|
|
|
|
method: 'DELETE',
|
2023-04-27 10:49:55 +02:00
|
|
|
url: `${baseUrl}/api/admin/projects/default/features/${featureToggleName}-A`,
|
2023-03-29 13:47:12 +02:00
|
|
|
failOnStatusCode: false,
|
|
|
|
});
|
|
|
|
cy.request({
|
|
|
|
method: 'DELETE',
|
2023-04-27 10:49:55 +02:00
|
|
|
url: `${baseUrl}/api/admin/projects/default/features/${featureToggleName}-B`,
|
2023-03-29 13:47:12 +02:00
|
|
|
failOnStatusCode: false,
|
|
|
|
});
|
|
|
|
cy.request({
|
|
|
|
method: 'DELETE',
|
|
|
|
url: `${baseUrl}/api/admin/archive/${featureToggleName}-A`,
|
|
|
|
});
|
|
|
|
cy.request({
|
|
|
|
method: 'DELETE',
|
|
|
|
url: `${baseUrl}/api/admin/archive/${featureToggleName}-B`,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('loads the table', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.login_UI();
|
|
|
|
cy.createFeature_API(`${featureToggleName}-A`);
|
|
|
|
cy.createFeature_API(`${featureToggleName}-B`);
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.visit('/projects/default');
|
|
|
|
|
|
|
|
// Use search to filter feature toggles and check that the feature toggle is listed in the table.
|
|
|
|
cy.get("[data-testid='SEARCH_INPUT']").click().type(featureToggleName);
|
|
|
|
cy.get('table').contains('td', `${featureToggleName}-A`);
|
|
|
|
cy.get('table tbody tr').should('have.length', 2);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('can select and deselect feature toggles', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.login_UI();
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.visit('/projects/default');
|
|
|
|
cy.viewport(1920, 1080);
|
|
|
|
cy.get("[data-testid='SEARCH_INPUT']").click().type(featureToggleName);
|
|
|
|
cy.get('table tbody tr').should('have.length', 2);
|
|
|
|
const counter = `[data-testid="${BATCH_SELECTED_COUNT}"]`;
|
|
|
|
|
|
|
|
cy.get(counter).should('not.exist');
|
|
|
|
cy.get(selectAll).click();
|
|
|
|
cy.get(counter).contains('2');
|
|
|
|
cy.get(selectAll).click();
|
|
|
|
cy.get(counter).should('not.exist');
|
|
|
|
|
|
|
|
cy.get('table td')
|
|
|
|
.contains(`${featureToggleName}-A`)
|
|
|
|
.closest('tr')
|
|
|
|
.find(`[data-testid="${BATCH_SELECT}"] input[type="checkbox"]`)
|
|
|
|
.click();
|
|
|
|
cy.get(counter).contains('1');
|
|
|
|
|
|
|
|
cy.get('table td')
|
|
|
|
.contains(`${featureToggleName}-A`)
|
|
|
|
.closest('tr')
|
|
|
|
.find(`[data-testid="${BATCH_SELECT}"] input[type="checkbox"]`)
|
|
|
|
.click();
|
|
|
|
cy.get(counter).should('not.exist');
|
|
|
|
cy.get('table td')
|
|
|
|
.contains(`${featureToggleName}-B`)
|
|
|
|
.closest('tr')
|
|
|
|
.find(`[data-testid="${BATCH_SELECT}"] input[type="checkbox"]`)
|
|
|
|
.click();
|
|
|
|
cy.get(counter).contains('1');
|
|
|
|
|
|
|
|
cy.get('table td')
|
|
|
|
.contains(`${featureToggleName}-A`)
|
|
|
|
.closest('tr')
|
|
|
|
.find(`[data-testid="${BATCH_SELECT}"] input[type="checkbox"]`)
|
|
|
|
.click();
|
|
|
|
cy.get(counter).contains('2');
|
|
|
|
cy.get('table td')
|
|
|
|
.contains(`${featureToggleName}-B`)
|
|
|
|
.closest('tr')
|
|
|
|
.find(`[data-testid="${BATCH_SELECT}"] input[type="checkbox"]`)
|
|
|
|
.click();
|
|
|
|
cy.get(counter).contains('1');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('can mark selected togggles as stale', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.login_UI();
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.visit('/projects/default');
|
|
|
|
cy.viewport(1920, 1080);
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.get(`[data-testid='${SEARCH_INPUT}']`)
|
|
|
|
.click()
|
|
|
|
.type(featureToggleName);
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.get('table tbody tr').should('have.length', 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/default/features/${featureToggleName}-A`);
|
|
|
|
cy.get('[title="Feature toggle is deprecated."]').should('exist');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('can archive selected togggles', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.login_UI();
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.visit('/projects/default');
|
|
|
|
cy.viewport(1920, 1080);
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.get(`[data-testid='${SEARCH_INPUT}']`)
|
|
|
|
.click()
|
|
|
|
.type(featureToggleName);
|
2023-03-29 13:47:12 +02:00
|
|
|
cy.get('table tbody tr').should('have.length', 2);
|
|
|
|
cy.get(selectAll).click();
|
|
|
|
|
|
|
|
cy.get(`[data-testid=${BATCH_ACTIONS_BAR}] button`)
|
|
|
|
.contains('Archive')
|
|
|
|
.click();
|
|
|
|
cy.get('p')
|
|
|
|
.contains('Are you sure you want to archive 2 feature toggles?')
|
|
|
|
.should('exist');
|
|
|
|
cy.get('button').contains('Archive toggles').click();
|
|
|
|
cy.get('table tbody tr').should('have.length', 0);
|
|
|
|
});
|
|
|
|
});
|