Ghost/ghost/core/playwright.config.js
Chris Raible af0f26c75f
Added Dev Container setup (#21279)
no issue

- Dev Containers let you work on Ghost in a consistent, isolated
environment with all the necessary development dependencies
pre-installed. VSCode (or Cursor) can effectively run _inside_ the
container, providing a local quality development environment while
working in a well-defined, isolated environment.
- For now the default setup only works with "Clone repository in
Container Volume" or "Clone PR in Container Volume" — this allows for a
super quick and simple setup. We can also introduce another
configuration to allow opening an existing local checkout in a Dev
Container, but that's not quite ready yet.
- This PR also added the `yarn clean:hard` command which: deletes all
node_modules, cleans the yarn cache, and cleans the NX cache. This will
be necessary for opening a local checkout in a Dev Container.
- To learn more about Dev Containers, read this guide from VSCode:
https://code.visualstudio.com/docs/devcontainers/containers#_personalizing-with-dotfile-repositories

---------

Co-authored-by: Joe Grigg <joe@ghost.org>
Co-authored-by: Steve Larson <9larsons@gmail.com>
2024-10-24 11:15:08 -07:00

56 lines
1.5 KiB
JavaScript

/** @type {import('@playwright/test').PlaywrightTestConfig} */
const os = require('os');
const getWorkerCount = () => {
if (process.env.CI) {
return '100%';
}
if (process.env.PLAYWRIGHT_SLOWMO) {
return 1;
}
let cpuCount;
try {
cpuCount = os.cpus().length;
} catch (err) {
cpuCount = 1;
}
// Stripe limits to 5 new accounts per second
// If we go higher than 5, we'll get rate limited and tests will fail
return Math.min(5, cpuCount - 1);
};
const config = {
timeout: 75 * 1000,
expect: {
timeout: 10000
},
// save trace on fail
retries: process.env.CI ? 2 : 0,
workers: getWorkerCount(),
reporter: process.env.CI ? [['list', {printSteps: true}], ['html']] : [['list', {printSteps: true}]],
use: {
trace: 'retain-on-failure',
// Use a single browser since we can't simultaneously test multiple browsers
browserName: 'chromium',
headless: !process.env.PLAYWRIGHT_DEBUG,
// Port doesn't matter, overriden by baseURL fixture for each worker
baseURL: 'http://127.0.0.1:2368'
},
// separated tests to projects for better logging to console
// portal tests are much more stable when running in the separate DB from admin tests
projects: [
{
name: 'admin',
testDir: 'test/e2e-browser/admin'
},
{
name: 'portal',
testDir: 'test/e2e-browser/portal',
fullyParallel: true
}
]
};
module.exports = config;