/// describe('feature', () => { const randomId = String(Math.random()).split('.')[1]; const featureToggleName = `unleash-e2e-${randomId}`; const projectName = `unleash-e2e-project-${randomId}`; before(() => { cy.runBefore(); cy.login_UI(); cy.createProject_API(projectName); }); after(() => { cy.on('uncaught:exception', (err) => { if ( err.message.includes( 'ResizeObserver loop completed with undelivered notifications', ) ) { console.log( 'Ignored an uncaught resize observer error:', err.message, ); // ignore resize observer errors // https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#observation_errors // returning false here prevents Cypress from failing the test return false; } }); cy.deleteFeature_API(featureToggleName, projectName); cy.deleteProject_API(projectName); }); beforeEach(() => { cy.login_UI(); cy.visit('/features'); }); it('can create a feature flag', () => { cy.createFeature_UI(featureToggleName, true, projectName); cy.url().should('include', featureToggleName); }); it('gives an error if a toggle exists with the same name', () => { cy.createFeature_UI(featureToggleName, false, projectName); cy.get("[data-testid='INPUT_ERROR_TEXT']").contains( 'A flag with that name already exists', ); }); it('gives an error if a toggle name is url unsafe', () => { cy.createFeature_UI('featureToggleUnsafe####$#//', false, projectName); cy.get("[data-testid='INPUT_ERROR_TEXT']").contains( `"name" must be URL friendly`, ); }); it('can add, update and delete a gradual rollout strategy to the development environment', () => { cy.addFlexibleRolloutStrategyToFeature_UI({ featureToggleName, project: projectName, }).then(() => { cy.updateFlexibleRolloutStrategy_UI( featureToggleName, projectName, ).then(() => cy.deleteFeatureStrategy_UI( featureToggleName, false, projectName, ), ); }); }); });