2025-04-24 13:11:28 +08:00

229 lines
5.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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')
})
})