mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-14 23:24:46 -04:00
Fix renderer type test (#1647)
Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
abceb356db
commit
a96b06c95b
6 changed files with 40 additions and 16 deletions
|
@ -13,7 +13,7 @@ describe('Intro page', () => {
|
||||||
|
|
||||||
describe('customizable content', () => {
|
describe('customizable content', () => {
|
||||||
it('fetches and shows the correct intro page content', () => {
|
it('fetches and shows the correct intro page content', () => {
|
||||||
cy.getMarkdownBody().contains('test content')
|
cy.getIntroBody().contains('test content')
|
||||||
})
|
})
|
||||||
|
|
||||||
it("won't show anything if no content was found", () => {
|
it("won't show anything if no content was found", () => {
|
||||||
|
|
|
@ -11,27 +11,22 @@ describe('Renderer mode', () => {
|
||||||
|
|
||||||
it("should be 'document' without type specified", () => {
|
it("should be 'document' without type specified", () => {
|
||||||
cy.getMarkdownBody().should('exist')
|
cy.getMarkdownBody().should('exist')
|
||||||
cy.getReveal().should('not.exist')
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should be 'reveal.js' with type 'slide'", () => {
|
it("should be 'reveal.js' with type 'slide'", () => {
|
||||||
cy.setCodemirrorContent('---\ntype: slide\n---\n')
|
cy.setCodemirrorContent('---\ntype: slide\n---\n')
|
||||||
cy.getMarkdownBody().should('not.exist')
|
|
||||||
cy.getReveal().should('exist')
|
cy.getReveal().should('exist')
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should be 'document' with invalid type", () => {
|
it("should be 'document' with invalid type", () => {
|
||||||
cy.setCodemirrorContent('---\ntype: EinDokument\n---\n')
|
cy.setCodemirrorContent('---\ntype: EinDokument\n---\n')
|
||||||
cy.getMarkdownBody().should('exist')
|
cy.getMarkdownBody().should('exist')
|
||||||
cy.getReveal().should('not.exist')
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it("should change from 'reveal.js' to 'document' if changed from 'slide' to something else", () => {
|
it("should change from 'reveal.js' to 'document' if changed from 'slide' to something else", () => {
|
||||||
cy.setCodemirrorContent('---\ntype: slide\n---\n')
|
cy.setCodemirrorContent('---\ntype: slide\n---\n')
|
||||||
cy.getMarkdownBody().should('not.exist')
|
|
||||||
cy.getReveal().should('exist')
|
cy.getReveal().should('exist')
|
||||||
cy.setCodemirrorContent('')
|
cy.setCodemirrorContent('')
|
||||||
cy.getMarkdownBody().should('exist')
|
cy.getMarkdownBody().should('exist')
|
||||||
cy.getReveal().should('not.exist')
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,17 +4,22 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { RendererType } from '../../src/components/render-page/window-post-message-communicator/rendering-message'
|
||||||
|
|
||||||
declare namespace Cypress {
|
declare namespace Cypress {
|
||||||
interface Chainable {
|
interface Chainable {
|
||||||
getIframeBody(): Chainable<Element>
|
getIframeBody(rendererType?: RendererType): Chainable<Element>
|
||||||
|
|
||||||
getReveal(): Chainable<Element>
|
getReveal(): Chainable<Element>
|
||||||
|
|
||||||
getMarkdownBody(): Chainable<Element>
|
getMarkdownBody(): Chainable<Element>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cypress.Commands.add('getIframeBody', () => {
|
Cypress.Commands.add('getIframeBody', (rendererType?: RendererType) => {
|
||||||
|
const renderTypeAttribute = rendererType ? `[data-cypress-renderer-type="${rendererType}"]` : ''
|
||||||
return cy
|
return cy
|
||||||
.get(`iframe[data-cypress-id="documentIframe"][data-content-ready="true"]`)
|
.get(`iframe[data-cypress-id="documentIframe"][data-cypress-renderer-ready="true"]${renderTypeAttribute}`)
|
||||||
.should('be.visible')
|
.should('be.visible')
|
||||||
.its('0.contentDocument')
|
.its('0.contentDocument')
|
||||||
.should('exist')
|
.should('exist')
|
||||||
|
@ -24,9 +29,13 @@ Cypress.Commands.add('getIframeBody', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add('getReveal', () => {
|
Cypress.Commands.add('getReveal', () => {
|
||||||
return cy.getIframeBody().find('.reveal')
|
return cy.getIframeBody(RendererType.SLIDESHOW).find('.reveal')
|
||||||
})
|
})
|
||||||
|
|
||||||
Cypress.Commands.add('getMarkdownBody', () => {
|
Cypress.Commands.add('getMarkdownBody', () => {
|
||||||
return cy.getIframeBody().find('.markdown-body')
|
return cy.getIframeBody(RendererType.DOCUMENT).find('.markdown-body')
|
||||||
|
})
|
||||||
|
|
||||||
|
Cypress.Commands.add('getIntroBody', () => {
|
||||||
|
return cy.getIframeBody(RendererType.INTRO).find('.markdown-body')
|
||||||
})
|
})
|
||||||
|
|
|
@ -26,7 +26,7 @@ import { useSendScrollState } from './hooks/use-send-scroll-state'
|
||||||
import { useApplicationState } from '../../../hooks/common/use-application-state'
|
import { useApplicationState } from '../../../hooks/common/use-application-state'
|
||||||
import { Logger } from '../../../utils/logger'
|
import { Logger } from '../../../utils/logger'
|
||||||
import { useEffectOnRenderTypeChange } from './hooks/use-effect-on-render-type-change'
|
import { useEffectOnRenderTypeChange } from './hooks/use-effect-on-render-type-change'
|
||||||
import { cypressId } from '../../../utils/cypress-attribute'
|
import { cypressAttribute, cypressId } from '../../../utils/cypress-attribute'
|
||||||
|
|
||||||
export interface RenderIframeProps extends RendererProps {
|
export interface RenderIframeProps extends RendererProps {
|
||||||
rendererType: RendererType
|
rendererType: RendererType
|
||||||
|
@ -148,7 +148,8 @@ export const RenderIframe: React.FC<RenderIframeProps> = ({
|
||||||
ref={frameReference}
|
ref={frameReference}
|
||||||
referrerPolicy={'no-referrer'}
|
referrerPolicy={'no-referrer'}
|
||||||
className={`border-0 ${frameClasses ?? ''}`}
|
className={`border-0 ${frameClasses ?? ''}`}
|
||||||
data-content-ready={rendererReady}
|
{...cypressAttribute('renderer-ready', rendererReady ? 'true' : 'false')}
|
||||||
|
{...cypressAttribute('renderer-type', rendererType)}
|
||||||
/>
|
/>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
)
|
)
|
||||||
|
|
|
@ -120,9 +120,9 @@ export type RendererToEditorMessageType =
|
||||||
| CommunicationMessageType.ON_WORD_COUNT_CALCULATED
|
| CommunicationMessageType.ON_WORD_COUNT_CALCULATED
|
||||||
|
|
||||||
export enum RendererType {
|
export enum RendererType {
|
||||||
DOCUMENT,
|
DOCUMENT = 'document',
|
||||||
INTRO,
|
INTRO = 'intro',
|
||||||
SLIDESHOW
|
SLIDESHOW = 'slideshow'
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BaseConfiguration {
|
export interface BaseConfiguration {
|
||||||
|
|
|
@ -31,3 +31,22 @@ export const cypressId = (
|
||||||
return { 'data-cypress-id': attributeContent }
|
return { 'data-cypress-id': attributeContent }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an object with an attribute that starts with "data-cypress-" and the given attribute name.
|
||||||
|
* It is used to check additional data during integration tests.
|
||||||
|
* This works only if the runtime is built in test mode.
|
||||||
|
*
|
||||||
|
* @param attribute The attribute name
|
||||||
|
* @param value The attribute content
|
||||||
|
* @return An object if in test mode, undefined otherwise.
|
||||||
|
*/
|
||||||
|
export const cypressAttribute = (attribute: string, value: string): Record<string, string> | undefined => {
|
||||||
|
if (!isTestMode()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
[`data-cypress-${attribute}`]: value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue