2023-04-04 10:46:28 +02:00
|
|
|
///<reference path="../../global.d.ts" />
|
2021-09-30 11:44:30 +02:00
|
|
|
|
2023-04-05 13:20:58 +02:00
|
|
|
describe('feature', () => {
|
|
|
|
const randomId = String(Math.random()).split('.')[1];
|
|
|
|
const featureToggleName = `unleash-e2e-${randomId}`;
|
2023-04-04 10:46:28 +02:00
|
|
|
|
2023-04-05 13:20:58 +02:00
|
|
|
const variant1 = 'variant1';
|
|
|
|
const variant2 = 'variant2';
|
2021-09-30 11:44:30 +02:00
|
|
|
|
2022-03-23 12:45:23 +01:00
|
|
|
before(() => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.runBefore();
|
2022-03-23 12:45:23 +01:00
|
|
|
});
|
|
|
|
|
2021-09-30 11:44:30 +02:00
|
|
|
after(() => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.deleteFeature_API(featureToggleName);
|
2021-09-30 11:44:30 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
beforeEach(() => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.login_UI();
|
2022-11-28 11:12:45 +01:00
|
|
|
cy.visit('/features');
|
2021-09-30 11:44:30 +02:00
|
|
|
});
|
|
|
|
|
2022-02-25 10:21:28 +01:00
|
|
|
it('can create a feature toggle', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.createFeature_UI(featureToggleName, true);
|
2021-09-30 11:44:30 +02:00
|
|
|
cy.url().should('include', featureToggleName);
|
|
|
|
});
|
|
|
|
|
2022-02-25 10:21:28 +01:00
|
|
|
it('gives an error if a toggle exists with the same name', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.createFeature_UI(featureToggleName, false);
|
2022-04-08 13:13:45 +02:00
|
|
|
cy.get("[data-testid='INPUT_ERROR_TEXT']").contains(
|
2022-06-07 15:03:40 +02:00
|
|
|
'A toggle with that name already exists'
|
2022-02-11 00:43:23 +01:00
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2022-02-25 10:21:28 +01:00
|
|
|
it('gives an error if a toggle name is url unsafe', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.createFeature_UI('featureToggleUnsafe####$#//', false);
|
2022-04-08 13:13:45 +02:00
|
|
|
cy.get("[data-testid='INPUT_ERROR_TEXT']").contains(
|
2022-02-11 00:43:23 +01:00
|
|
|
`"name" must be URL friendly`
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2023-05-08 10:16:18 +02:00
|
|
|
it('can add, update and delete a gradual rollout strategy to the development environment', () => {
|
2023-04-04 10:46:28 +02:00
|
|
|
cy.addFlexibleRolloutStrategyToFeature_UI({
|
|
|
|
featureToggleName,
|
2023-05-08 10:16:18 +02:00
|
|
|
}).then(() => {
|
|
|
|
cy.updateFlexibleRolloutStrategy_UI(featureToggleName).then(() =>
|
|
|
|
cy.deleteFeatureStrategy_UI(featureToggleName)
|
2023-04-04 10:46:28 +02:00
|
|
|
);
|
|
|
|
});
|
2021-09-30 11:44:30 +02:00
|
|
|
});
|
|
|
|
|
2022-03-09 14:59:24 +01:00
|
|
|
it('can add a userId strategy to the development environment', () => {
|
2023-05-08 10:16:18 +02:00
|
|
|
cy.addUserIdStrategyToFeature_UI(featureToggleName).then(() => {
|
|
|
|
cy.deleteFeatureStrategy_UI(featureToggleName, false);
|
|
|
|
});
|
2021-09-30 11:44:30 +02:00
|
|
|
});
|
2021-10-08 11:23:29 +02:00
|
|
|
|
2023-04-04 10:46:28 +02:00
|
|
|
it('can add variants to the development environment', () => {
|
|
|
|
cy.addVariantsToFeature_UI(featureToggleName, [variant1, variant2]);
|
2021-10-08 11:23:29 +02:00
|
|
|
});
|
2021-10-28 13:32:29 +02:00
|
|
|
|
2023-04-04 10:46:28 +02:00
|
|
|
it('can update variants', () => {
|
2022-02-04 10:36:08 +01:00
|
|
|
cy.visit(`/projects/default/features/${featureToggleName}/variants`);
|
2022-02-25 10:21:28 +01:00
|
|
|
|
2023-02-14 15:02:02 +01:00
|
|
|
cy.get('[data-testid=EDIT_VARIANTS_BUTTON]').click();
|
2022-04-08 13:13:45 +02:00
|
|
|
cy.get('[data-testid=VARIANT_NAME_INPUT]')
|
2023-02-14 15:02:02 +01:00
|
|
|
.last()
|
2021-10-08 11:23:29 +02:00
|
|
|
.children()
|
|
|
|
.find('input')
|
|
|
|
.should('have.attr', 'disabled');
|
2023-02-14 15:02:02 +01:00
|
|
|
cy.get('[data-testid=VARIANT_WEIGHT_CHECK]')
|
|
|
|
.last()
|
|
|
|
.find('input')
|
|
|
|
.check();
|
|
|
|
cy.get('[data-testid=VARIANT_WEIGHT_INPUT]').last().clear().type('15');
|
2022-02-25 10:21:28 +01:00
|
|
|
|
2021-10-08 11:23:29 +02:00
|
|
|
cy.intercept(
|
|
|
|
'PATCH',
|
2023-02-14 15:02:02 +01:00
|
|
|
`/api/admin/projects/default/features/${featureToggleName}/environments/development/variants`,
|
2021-10-08 11:23:29 +02:00
|
|
|
req => {
|
|
|
|
expect(req.body[0].op).to.equal('replace');
|
2023-02-14 15:02:02 +01:00
|
|
|
expect(req.body[0].path).to.equal('/1/weightType');
|
|
|
|
expect(req.body[0].value).to.equal('fix');
|
2021-10-08 11:23:29 +02:00
|
|
|
expect(req.body[1].op).to.equal('replace');
|
2023-02-14 15:02:02 +01:00
|
|
|
expect(req.body[1].path).to.equal('/1/weight');
|
|
|
|
expect(req.body[1].value).to.equal(150);
|
2021-10-08 11:23:29 +02:00
|
|
|
expect(req.body[2].op).to.equal('replace');
|
2023-02-14 15:02:02 +01:00
|
|
|
expect(req.body[2].path).to.equal('/0/weight');
|
|
|
|
expect(req.body[2].value).to.equal(850);
|
2021-10-08 11:23:29 +02:00
|
|
|
}
|
2022-02-25 10:21:28 +01:00
|
|
|
).as('variantUpdate');
|
|
|
|
|
2022-04-08 13:13:45 +02:00
|
|
|
cy.get('[data-testid=DIALOGUE_CONFIRM_ID]').click();
|
2023-02-14 15:02:02 +01:00
|
|
|
cy.get(`[data-testid=VARIANT_WEIGHT_${variant2}]`).should(
|
2022-05-31 13:45:04 +02:00
|
|
|
'have.text',
|
|
|
|
'15 %'
|
|
|
|
);
|
2021-10-08 11:23:29 +02:00
|
|
|
});
|
|
|
|
|
2023-04-04 10:46:28 +02:00
|
|
|
it('can delete variants', () => {
|
|
|
|
cy.deleteVariant_UI(featureToggleName, variant2);
|
2021-10-08 11:23:29 +02:00
|
|
|
});
|
2021-09-30 11:44:30 +02:00
|
|
|
});
|