mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-06 22:40:14 -05:00
a596b3aaca
ref https://www.notion.so/AdminX-testing-plan-99b2dab27e794fc893767ccd01c84a63?d=26612fc2b9d84e65bbb269fa3bc5079e&pvs=4#f0089cd4d9f24e93bd7f8e2868987bf6 This pull request renames the end-to-end tests to acceptance tests in the `apps/admin-x-settings` folder. It updates the `ci.yml` file, the `package.json` file, the `playwright.config.ts` file, and the test files to reflect the new naming convention. This change aims to better reflect the purpose and scope of the tests.
90 lines
3.2 KiB
TypeScript
90 lines
3.2 KiB
TypeScript
import {expect, test} from '@playwright/test';
|
|
import {globalDataRequests, mockApi, updatedSettingsResponse} from '../../utils/acceptance';
|
|
|
|
// CodeMirror takes some time to load in Playwright meaning the first few characters typed don't always
|
|
// show up in the input. Since that lag is not consistent, this workaround ensures we type enough
|
|
// characters to consistently include the full string we want
|
|
const PADDING = 'xxxxx ';
|
|
|
|
test.describe('Code injection settings', async () => {
|
|
test('Supports adding injected code', async ({page}) => {
|
|
const {lastApiRequests} = await mockApi({page, requests: {
|
|
...globalDataRequests,
|
|
editSettings: {method: 'PUT', path: '/settings/', response: updatedSettingsResponse([
|
|
{key: 'codeinjection_head', value: '<testhead />'},
|
|
{key: 'codeinjection_foot', value: '<testfoot />'}
|
|
])}
|
|
}});
|
|
|
|
await page.goto('/');
|
|
|
|
const section = page.getByTestId('code-injection');
|
|
|
|
await section.getByRole('button', {name: 'Edit'}).click();
|
|
|
|
for (const character of PADDING + '<testhead>'.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
await section.getByRole('tab', {name: 'Site footer'}).click();
|
|
await section.getByTestId('footer-code').click();
|
|
|
|
for (const character of PADDING + '<testfoot>'.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
await section.getByRole('button', {name: 'Save'}).click();
|
|
|
|
expect(lastApiRequests.editSettings?.body).toMatchObject({
|
|
settings: [
|
|
{key: 'codeinjection_head', value: /<testhead>$/},
|
|
{key: 'codeinjection_foot', value: /<testfoot>$/}
|
|
]
|
|
});
|
|
});
|
|
|
|
test('Supports continuing editing in fullscreen', async ({page}) => {
|
|
const {lastApiRequests} = await mockApi({page, requests: {
|
|
...globalDataRequests,
|
|
editSettings: {method: 'PUT', path: '/settings/', response: updatedSettingsResponse([
|
|
{key: 'codeinjection_head', value: '<1 /><2 /><3 />'}
|
|
])}
|
|
}});
|
|
|
|
await page.goto('/');
|
|
|
|
const section = page.getByTestId('code-injection');
|
|
|
|
await section.getByRole('button', {name: 'Edit'}).click();
|
|
|
|
for (const character of PADDING.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
for (const character of '<1>'.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
await section.getByRole('button', {name: 'Fullscreen'}).click();
|
|
|
|
await page.keyboard.press('End');
|
|
for (const character of '<2>'.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
await page.getByTestId('modal-code').getByRole('button', {name: 'Done'}).click();
|
|
|
|
await page.keyboard.press('End');
|
|
for (const character of '<3>'.split('')) {
|
|
await page.keyboard.press(character);
|
|
}
|
|
|
|
await section.getByRole('button', {name: 'Save'}).click();
|
|
|
|
expect(lastApiRequests.editSettings?.body).toMatchObject({
|
|
settings: [
|
|
{key: 'codeinjection_head', value: /<1><2><3>$/}
|
|
]
|
|
});
|
|
});
|
|
});
|