mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-29 14:25:38 -04:00
fix: Move content into to frontend directory
Doing this BEFORE the merge prevents a lot of merge conflicts. Signed-off-by: Tilman Vatteroth <git@tilmanvatteroth.de>
This commit is contained in:
parent
4e18ce38f3
commit
762a0a850e
1051 changed files with 0 additions and 35 deletions
19
frontend/cypress/support/check-links.ts
Normal file
19
frontend/cypress/support/check-links.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
/**
|
||||
* Custom command to check an external Link.
|
||||
* @example cy.get(a#extern).checkExternalLink('http://example.com')
|
||||
*/
|
||||
checkExternalLink(url: string): Chainable<Element>
|
||||
}
|
||||
}
|
||||
|
||||
Cypress.Commands.add('checkExternalLink', { prevSubject: 'element' }, ($element: JQuery, url: string) => {
|
||||
cy.wrap($element).should('have.attr', 'href', url).should('have.attr', 'target', '_blank')
|
||||
})
|
103
frontend/cypress/support/config.ts
Normal file
103
frontend/cypress/support/config.ts
Normal file
|
@ -0,0 +1,103 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { AuthProviderType } from '../../src/api/config/types'
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
loadConfig(): Chainable<Window>
|
||||
}
|
||||
}
|
||||
|
||||
export const branding = {
|
||||
name: 'DEMO Corp',
|
||||
logo: 'public/img/demo.png'
|
||||
}
|
||||
|
||||
export const authProviders = [
|
||||
{
|
||||
type: AuthProviderType.FACEBOOK
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.GITHUB
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.TWITTER
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.DROPBOX
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.GOOGLE
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.LOCAL
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.LDAP,
|
||||
identifier: 'test-ldap',
|
||||
providerName: 'Test LDAP'
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.OAUTH2,
|
||||
identifier: 'test-oauth2',
|
||||
providerName: 'Test OAuth2'
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.SAML,
|
||||
identifier: 'test-saml',
|
||||
providerName: 'Test SAML'
|
||||
},
|
||||
{
|
||||
type: AuthProviderType.GITLAB,
|
||||
identifier: 'test-gitlab',
|
||||
providerName: 'Test GitLab'
|
||||
}
|
||||
]
|
||||
|
||||
export const config = {
|
||||
allowAnonymous: true,
|
||||
allowRegister: true,
|
||||
authProviders: authProviders,
|
||||
branding: branding,
|
||||
useImageProxy: false,
|
||||
specialUrls: {
|
||||
privacy: 'https://example.com/privacy',
|
||||
termsOfUse: 'https://example.com/termsOfUse',
|
||||
imprint: 'https://example.com/imprint'
|
||||
},
|
||||
version: {
|
||||
major: 0,
|
||||
minor: 0,
|
||||
patch: 0,
|
||||
preRelease: '',
|
||||
commit: 'MOCK'
|
||||
},
|
||||
plantumlServer: 'http://mock-plantuml.local',
|
||||
maxDocumentLength: 200
|
||||
}
|
||||
|
||||
Cypress.Commands.add('loadConfig', (additionalConfig?: Partial<typeof config>) => {
|
||||
return cy.intercept('api/private/config', {
|
||||
statusCode: 200,
|
||||
body: {
|
||||
...config,
|
||||
...additionalConfig
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.loadConfig()
|
||||
|
||||
cy.intercept('GET', 'public/motd.md', {
|
||||
body: '404 Not Found!',
|
||||
statusCode: 404
|
||||
})
|
||||
cy.intercept('HEAD', 'public/motd.md', {
|
||||
statusCode: 404
|
||||
})
|
||||
})
|
30
frontend/cypress/support/e2e.ts
Normal file
30
frontend/cypress/support/e2e.ts
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
// ***********************************************************
|
||||
// This example support/index.ts is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
import 'cypress-commands'
|
||||
import './check-links'
|
||||
import './config'
|
||||
import './fill'
|
||||
import './get-by-id'
|
||||
import './get-iframe-content'
|
||||
import './logout'
|
||||
import './visit-test-editor'
|
||||
import './visit'
|
29
frontend/cypress/support/fill.ts
Normal file
29
frontend/cypress/support/fill.ts
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
import 'cypress-fill-command'
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
setCodemirrorContent(value: string): Chainable<Element>
|
||||
}
|
||||
}
|
||||
|
||||
Cypress.Commands.add('setCodemirrorContent', (content: string) => {
|
||||
const line = content.split('\n').find((value) => value !== '')
|
||||
cy.getByCypressId('editor-pane')
|
||||
.should('have.attr', 'data-cypress-editor-ready', 'true')
|
||||
.get('.cm-editor')
|
||||
.click()
|
||||
.get('.cm-content')
|
||||
.fill(content)
|
||||
if (line) {
|
||||
cy.getByCypressId('editor-pane')
|
||||
.should('have.attr', 'data-cypress-editor-ready', 'true')
|
||||
.get('.cm-editor')
|
||||
.find('.cm-line')
|
||||
.should('contain.text', line)
|
||||
}
|
||||
})
|
28
frontend/cypress/support/get-by-id.ts
Normal file
28
frontend/cypress/support/get-by-id.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
getByCypressId(id: string): Chainable<Element>
|
||||
|
||||
findByCypressId(id: string): Chainable<Element>
|
||||
}
|
||||
}
|
||||
|
||||
const CYPRESS_ATTR = 'data-cypress-id'
|
||||
|
||||
Cypress.Commands.add('getByCypressId', (id: string) => {
|
||||
return cy.get(`[${CYPRESS_ATTR}="${id}"]`)
|
||||
})
|
||||
|
||||
Cypress.Commands.add(
|
||||
'findByCypressId',
|
||||
{
|
||||
prevSubject: 'element'
|
||||
},
|
||||
(parent: JQuery<HTMLElement>, id: string) => {
|
||||
return cy.wrap(parent).find(`[${CYPRESS_ATTR}="${id}"]`)
|
||||
}
|
||||
)
|
49
frontend/cypress/support/get-iframe-content.ts
Normal file
49
frontend/cypress/support/get-iframe-content.ts
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { RendererType } from '../../src/components/render-page/window-post-message-communicator/rendering-message'
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable<Subject = unknown> {
|
||||
getIframeBody(rendererType?: RendererType): Chainable<Element>
|
||||
|
||||
getReveal(): Chainable<Element>
|
||||
|
||||
getMarkdownBody(): Chainable<Element>
|
||||
|
||||
getIntroBody(): Chainable<Element>
|
||||
|
||||
getMotdBody(): Chainable<Element>
|
||||
}
|
||||
}
|
||||
|
||||
Cypress.Commands.add('getIframeBody', (rendererType?: RendererType) => {
|
||||
const renderTypeAttribute = rendererType ? `[data-cypress-renderer-type="${rendererType}"]` : ''
|
||||
return cy
|
||||
.get(`iframe[data-cypress-id="documentIframe"][data-cypress-renderer-ready="true"]${renderTypeAttribute}`)
|
||||
.should('be.visible')
|
||||
.its('0.contentDocument')
|
||||
.should('exist')
|
||||
.its('body')
|
||||
.should('not.be.undefined')
|
||||
.then(cy.wrap.bind(cy))
|
||||
})
|
||||
|
||||
Cypress.Commands.add('getReveal', () => {
|
||||
return cy.getIframeBody(RendererType.SLIDESHOW).find('.reveal')
|
||||
})
|
||||
|
||||
Cypress.Commands.add('getMarkdownBody', () => {
|
||||
return cy.getIframeBody(RendererType.DOCUMENT).findByCypressId('markdown-body')
|
||||
})
|
||||
|
||||
Cypress.Commands.add('getIntroBody', () => {
|
||||
return cy.getIframeBody(RendererType.INTRO).findByCypressId('markdown-body')
|
||||
})
|
||||
|
||||
Cypress.Commands.add('getMotdBody', () => {
|
||||
return cy.getIframeBody(RendererType.MOTD).findByCypressId('markdown-body')
|
||||
})
|
20
frontend/cypress/support/logout.ts
Normal file
20
frontend/cypress/support/logout.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
/**
|
||||
* Custom command to log the user out.
|
||||
* @example cy.logout()
|
||||
*/
|
||||
logout(): Chainable<Window>
|
||||
}
|
||||
}
|
||||
|
||||
Cypress.Commands.add('logout', () => {
|
||||
cy.getByCypressId('user-dropdown').click()
|
||||
cy.getByCypressId('user-dropdown-sign-out-button').click()
|
||||
})
|
32
frontend/cypress/support/visit-test-editor.ts
Normal file
32
frontend/cypress/support/visit-test-editor.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
export const testNoteId = 'test'
|
||||
|
||||
beforeEach(() => {
|
||||
cy.intercept(`api/private/notes/${testNoteId}`, {
|
||||
content: '',
|
||||
metadata: {
|
||||
id: testNoteId,
|
||||
alias: ['mock-note'],
|
||||
primaryAlias: 'mock-note',
|
||||
title: 'Mock Note',
|
||||
description: 'Mocked note for testing',
|
||||
tags: ['test', 'mock', 'cypress'],
|
||||
updateTime: '2021-04-24T09:27:51.000Z',
|
||||
updateUser: null,
|
||||
viewCount: 0,
|
||||
version: 2,
|
||||
createTime: '2021-04-24T09:27:51.000Z',
|
||||
editedBy: [],
|
||||
permissions: {
|
||||
owner: null,
|
||||
sharedToUsers: [],
|
||||
sharedToGroups: []
|
||||
}
|
||||
},
|
||||
editedByAtPosition: []
|
||||
})
|
||||
})
|
38
frontend/cypress/support/visit.ts
Normal file
38
frontend/cypress/support/visit.ts
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 The HedgeDoc developers (see AUTHORS file)
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
import { testNoteId } from './visit-test-editor'
|
||||
|
||||
declare namespace Cypress {
|
||||
interface Chainable {
|
||||
visitTestNote(pageMode?: PAGE_MODE, query?: string): Chainable<Cypress.AUTWindow>
|
||||
|
||||
visitHome(): Chainable<Cypress.AUTWindow>
|
||||
|
||||
visitHistory(): Chainable<Cypress.AUTWindow>
|
||||
}
|
||||
}
|
||||
|
||||
Cypress.Commands.add('visitHome', () => {
|
||||
return cy.visit('/', { retryOnNetworkFailure: true, retryOnStatusCodeFailure: true })
|
||||
})
|
||||
|
||||
Cypress.Commands.add('visitHistory', () => {
|
||||
return cy.visit(`/history`, { retryOnNetworkFailure: true, retryOnStatusCodeFailure: true })
|
||||
})
|
||||
|
||||
export enum PAGE_MODE {
|
||||
EDITOR = 'n',
|
||||
PRESENTATION = 'p',
|
||||
DOCUMENT_READ_ONLY = 's'
|
||||
}
|
||||
|
||||
Cypress.Commands.add('visitTestNote', (pageMode: PAGE_MODE = PAGE_MODE.EDITOR, query?: string) => {
|
||||
return cy.visit(`/${pageMode}/${testNoteId}${query ? `?${query}` : ''}`, {
|
||||
retryOnNetworkFailure: true,
|
||||
retryOnStatusCodeFailure: true
|
||||
})
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue