overleaf/services/web/test/frontend/components/pdf-preview/pdf-preview-hybrid-toolbar.spec.tsx
Alf Eaton 488c6ff919 Improve compile request mocking in Cypress tests (#12095)
GitOrigin-RevId: fdbc53148e5437e451dab4889232923c823d649e
2023-03-07 09:05:25 +00:00

105 lines
2.6 KiB
TypeScript

import { EditorProviders } from '../../helpers/editor-providers'
import PdfPreviewHybridToolbar from '../../../../frontend/js/features/pdf-preview/components/pdf-preview-hybrid-toolbar'
import { testDetachChannel } from '../../helpers/detach-channel'
describe('<PdfPreviewHybridToolbar/>', function () {
beforeEach(function () {
window.metaAttributesCache = new Map()
window.metaAttributesCache.set('ol-preventCompileOnLoad', true)
cy.interceptEvents()
})
afterEach(function () {
window.metaAttributesCache = new Map()
})
it('shows normal mode', function () {
cy.mount(
<EditorProviders>
<PdfPreviewHybridToolbar />
</EditorProviders>
)
cy.findByRole('button', { name: 'Recompile' })
})
describe('orphan mode', function () {
it('shows connecting message on load', function () {
cy.window().then(win => {
win.metaAttributesCache = new Map([['ol-detachRole', 'detached']])
})
cy.mount(
<EditorProviders>
<PdfPreviewHybridToolbar />
</EditorProviders>
)
cy.contains('Connecting with the editor')
})
it('shows compile UI when connected', function () {
cy.window().then(win => {
win.metaAttributesCache = new Map([['ol-detachRole', 'detached']])
})
cy.mount(
<EditorProviders>
<PdfPreviewHybridToolbar />
</EditorProviders>
)
cy.wrap(null).then(() => {
testDetachChannel.postMessage({
role: 'detacher',
event: 'connected',
})
})
cy.findByRole('button', { name: 'Recompile' })
})
it('shows connecting message when disconnected', function () {
cy.window().then(win => {
win.metaAttributesCache = new Map([['ol-detachRole', 'detached']])
})
cy.mount(
<EditorProviders>
<PdfPreviewHybridToolbar />
</EditorProviders>
)
cy.wrap(null).then(() => {
testDetachChannel.postMessage({
role: 'detacher',
event: 'connected',
})
testDetachChannel.postMessage({
role: 'detacher',
event: 'closed',
})
})
cy.contains('Connecting with the editor')
})
it('shows redirect button after timeout', function () {
cy.window().then(win => {
win.metaAttributesCache = new Map([['ol-detachRole', 'detached']])
})
cy.clock()
cy.mount(
<EditorProviders>
<PdfPreviewHybridToolbar />
</EditorProviders>
)
cy.tick(6000)
cy.findByRole('button', { name: 'Redirect to editor' })
})
})
})