229 lines
5.9 KiB
TypeScript
229 lines
5.9 KiB
TypeScript
import SplitTestBadge from '../../../../frontend/js/shared/components/split-test-badge'
|
||
import { EditorProviders } from '../../helpers/editor-providers'
|
||
|
||
describe('split test badge', function () {
|
||
it('renders an alpha badge with the url and tooltip text', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'active',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'alpha',
|
||
badgeInfo: {
|
||
url: '/alpha/participate',
|
||
tooltipText: 'This is an alpha feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.findByRole('link', { name: /this is an alpha feature/i })
|
||
.should('have.attr', 'href', '/alpha/participate')
|
||
.find('.badge')
|
||
.contains('α')
|
||
})
|
||
|
||
it('does not render the alpha badge when user is not assigned to the variant', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'default',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'alpha',
|
||
badgeInfo: {
|
||
url: '/alpha/participate',
|
||
tooltipText: 'This is an alpha feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.get('.badge').should('not.exist')
|
||
})
|
||
|
||
it('renders a beta badge with the url and tooltip text', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'active',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'beta',
|
||
badgeInfo: {
|
||
url: '/beta/participate',
|
||
tooltipText: 'This is a beta feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.findByRole('link', { name: /this is a beta feature/i })
|
||
.should('have.attr', 'href', '/beta/participate')
|
||
.find('.badge')
|
||
.contains('β')
|
||
})
|
||
|
||
it('does not render the beta badge when user is not assigned to the variant', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'default',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'beta',
|
||
badgeInfo: {
|
||
url: '/beta/participate',
|
||
tooltipText: 'This is a beta feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.get('.badge').should('not.exist')
|
||
})
|
||
|
||
it('renders an info badge with the url and tooltip text', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'active',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'release',
|
||
badgeInfo: {
|
||
url: '/feedback/form',
|
||
tooltipText: 'This is a new feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.findByRole('link', { name: /this is a new feature/i })
|
||
.should('have.attr', 'href', '/feedback/form')
|
||
.find('.info-badge')
|
||
})
|
||
|
||
it('does not render the info badge when user is not assigned to the variant', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'default',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'release',
|
||
badgeInfo: {
|
||
url: '/feedback/form',
|
||
tooltipText: 'This is a new feature',
|
||
},
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.get('.badge').should('not.exist')
|
||
})
|
||
|
||
it('does not render the badge when no split test info is available', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'active',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.get('.badge').should('not.exist')
|
||
})
|
||
|
||
it('default badge url and text are used when not provided', function () {
|
||
cy.window().then(win => {
|
||
win.metaAttributesCache.set('ol-splitTestVariants', {
|
||
'cypress-test': 'active',
|
||
})
|
||
win.metaAttributesCache.set('ol-splitTestInfo', {
|
||
'cypress-test': {
|
||
phase: 'release',
|
||
},
|
||
})
|
||
})
|
||
|
||
cy.mount(
|
||
<EditorProviders>
|
||
<SplitTestBadge
|
||
splitTestName="cypress-test"
|
||
displayOnVariants={['active']}
|
||
/>
|
||
</EditorProviders>
|
||
)
|
||
|
||
cy.findByRole('link', {
|
||
name: /we are testing this new feature.*click to give feedback/i,
|
||
})
|
||
.should('have.attr', 'href', '/beta/participate')
|
||
.find('.info-badge')
|
||
})
|
||
})
|