0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-11-24 18:07:17 +01:00
posthog/cypress/e2e/featureFlags.js
Paul D'Ambra d613f4bd06
chore: upgrade cypress to v10x (#9650)
* update cypress

* really click something that's actually there

* obey cypress and use done

* run cypress 9 in CI

* no need for before each when only one test

* no need to set window size to the default

* get tests passing file by file

* delay checking for a graph in a test

* be more specific cypress

* use cy command

* select text like a human

* silly cypress

* try and avoid cypress deciding that a visible field is not valid

* select delete button correctly

* find save button differently

* try and avoid not always typing the first character

* better trends selections

* use cy command to navigate

* conitnue trying to get tests to pass in CI

* another try at setting feature flag names in CI

* can CI find undo button without a wait?

* better assertion for cypress

* up to v10

* fix splitting specs with v10 path

* show cypress how to wait for the test to finish

* remove redundant file

* change return to satisfy new cypress

* move import
2022-06-09 11:14:21 +01:00

79 lines
3.3 KiB
JavaScript

describe('Feature Flags', () => {
let name
beforeEach(() => {
name = 'feature-flag-' + Math.floor(Math.random() * 10000000)
cy.visit('/feature_flags')
})
it('Create feature flag', () => {
// ensure unique names to avoid clashes
cy.get('h1').should('contain', 'Feature Flags')
cy.get('[data-attr=new-feature-flag]').click()
cy.get('[data-attr=feature-flag-key]').click().type(`{moveToEnd}${name}`).should('have.value', name)
cy.get('[data-attr=feature-flag-description]')
.type('This is a new feature.')
.should('have.value', 'This is a new feature.')
// select "add filter" and "property"
cy.get('[data-attr=new-prop-filter-feature-flag-null-0-1-').click()
// select the first property
cy.get('[data-attr=taxonomic-filter-searchfield]').click()
cy.get('[data-attr=taxonomic-filter-searchfield]').type('is_demo')
cy.get('[data-attr=taxonomic-tab-person_properties]').click()
cy.get('[data-attr=prop-filter-person_properties-0]').click({ force: true })
// selects the first value
cy.get('[data-attr=prop-val]').click()
cy.get('[data-attr=prop-val-0]').click({ force: true })
// save the feature flag
cy.get('[data-attr=feature-flag-submit]').click()
// after save there should be a delete button
cy.get('button[data-attr="delete-flag"]').should('have.text', 'Delete')
// make sure the data is there as expected after a page reload!
cy.reload()
// click the sidebar item to go back to the list
cy.clickNavMenu('featureflags')
cy.get('[data-attr=feature-flag-table]').should('contain', name)
cy.get('[data-attr=feature-flag-table]').should('not.contain', '%') // By default it's released to everyone, if a % is not specified
cy.get('[data-attr=feature-flag-table]').should('contain', 'is_demo')
cy.get(`[data-row-key=${name}]`).contains(name).click()
cy.get('[data-attr=feature-flag-key]')
.click()
.type(`{moveToEnd}-updated`)
.should('have.value', name + '-updated')
cy.get('[data-attr=feature-flag-submit]').click()
cy.wait(100)
cy.clickNavMenu('featureflags')
cy.get('[data-attr=feature-flag-table]').should('contain', name + '-updated')
cy.get(`[data-row-key=${name}-updated] [data-attr=more-button]`).click()
cy.contains(`Try out in Insights`).click()
cy.location().should((loc) => {
expect(loc.pathname.toString()).to.contain('/insight')
})
})
it('Delete feature flag', () => {
cy.get('h1').should('contain', 'Feature Flags')
cy.get('[data-attr=new-feature-flag]').click()
cy.get('[data-attr=feature-flag-key]').focus().type(name).should('have.value', name)
cy.get('[data-attr=feature-flag-submit]').click()
// after save there should be a delete button
cy.get('button[data-attr="delete-flag"]').should('have.text', 'Delete')
cy.clickNavMenu('featureflags')
cy.get('[data-attr=feature-flag-table]').should('contain', name)
cy.get(`[data-row-key=${name}]`).contains(name).click()
cy.get('[data-attr=delete-flag]').click()
cy.get('.Toastify').contains('Undo').should('be.visible')
})
})