1
0
mirror of https://github.com/php/web-php.git synced 2026-03-24 07:12:16 +01:00
Files
archived-web-php/tests/Visual/SmokeTest.spec.ts

77 lines
1.9 KiB
TypeScript

import {expect, test} from '@playwright/test';
export type TestPageOptions = {
path: string
options?: object
evaluate?: () => any
mask?: string[]
}
const items: TestPageOptions[] = [
{
path: 'index.php',
evaluate: () => {
const selector = document.querySelector('.elephpants');
selector.remove()
},
options: {
fullPage: true,
timeout: 10000,
},
mask: ['.hero__versions'],
},
{
path: 'archive/1998.php',
evaluate: () => {
const selector = document.querySelector('.elephpants');
selector.remove()
}
},
{path: 'releases/8_3_6.php'},
{path: 'releases/8.0/index.php'},
{path: 'releases/8.1/index.php'},
{path: 'releases/8.2/index.php'},
{path: 'releases/8.3/index.php'},
{path: 'manual/index.php'},
{path: 'manual/php5.php'},
{
path: 'conferences/index.php',
options: {
fullPage: false,
}
},
]
for (const item of items) {
test(`testing with ${item.path}`, async ({page}, testInfo) => {
testInfo.snapshotSuffix = '';
const httpHost = process.env.HTTP_HOST
if (typeof httpHost !== 'string') {
throw new Error('Environment variable "HTTP_HOST" is not set.')
}
await page.goto(`${httpHost}/${item.path}`)
if (typeof item.evaluate === 'function') {
await page.evaluate(item.evaluate)
}
if (typeof item.mask === 'object') {
item.options = {
...item.options,
mask: item.mask.map((selector) => page.locator(selector))
}
}
await expect(page).toHaveScreenshot(
`tests/screenshots/${item.path}.png`,
item.options ?? {
fullPage: true,
timeout: 10000,
}
)
})
}