Тест драматурга с NX
У меня есть рабочее пространство NX с одним приложением под названием . Я хотел бы запустить тесты Playwright для приложения с помощью консоли NX. В настоящее время NX не поддерживает плагин Playwright, поэтому я создал собственный исполнитель NX в соответствии с этим руководством . Я создал необходимые файлы для исполнителя. После этого я зарегистрировал пользовательскую команду e2e в приложении
project.json
файл. Файл конфигурации драматурга остается в
my-app
папка.
Когда я запускаю экзекьютор выполняется, но почему-то драматург не запускается. Вместо этого я вижу ошибку.
Когда я запускаю вручную в консоли, команда запускается
nx run my-app:e2e
который
npx playwright test --config=apps/my-app/playwright.config.ts
драматург начинает и делает необходимые испытания.
проект.json
...
...
...
"e2e": {
"executor": "./tools/executors/playwright:playwright",
"options": {
"path": "apps/my-app/playwright.config.ts"
}
}
исполнитель.json
{
"executors": {
"playwright": {
"implementation": "./impl",
"schema": "./schema.json",
"description": "Runs Playwright Test "
}
}
}
импл.тс
export default async function echoExecutor(
options: PlaywrightExecutorOptions,
context: ExecutorContext
) {
console.info(`Executing "Playwright"...`);
console.info(`Options: ${JSON.stringify(options, null, 2)}`);
const { stdout, stderr } = await promisify(exec)(
`npx playwright test --config=${options.path}`,
);
console.log(stdout);
console.error(stderr);
const success = !stderr;
return { success };
}
схема.json
{
"$schema": "http://json-schema.org/schema",
"type": "object",
"cli": "nx",
"properties": {
"path": {
"type": "string",
"description": "Path to the project"
}
}
}
пакет.json
{
"executors": "./executor.json"
}
Я не уверен, но, возможно, проблема в
promisify
? Я пытаюсь позвонить с него. Может быть, есть другой способ позвонить
npx
в контексте?
const { stdout, stderr } = await promisify(exec)(
`npx playwright test --config=${options.path}`,
);
3 ответа
Я рекомендую https://github.com/marksandspencer/nx-plugins/tree/main/packages/nx-playwright
Вам нужно будет установить плагин, используя
yarn add --dev @mands/nx-playwright
yarn playwright install --with-deps
Удалить существующее приложение e2e
nx generate remove <APP-NAME>-e2e
перед созданием нового
Создать новое приложение e2e
yarn nx generate @mands/nx-playwright:project <APP-NAME>-e2e --project <APP-NAME>
PS: я также являюсь автором плагина
Я бы предложил использовать https://github.com/marksandspencer/nx-plugins/tree/main/packages/nx-playwright
Это должно работать из коробки
Попробуйте использовать pnpm nx... Во-первых, в определении:
"scripts": {
"test": "playwright test --output build --workers 2",
"test:debug": "playwright test --output build --debug",
"test:headed": "playwright test --output build --headed",
"test:codegen": "playwright codegen https://xxx.xxx.com/ -o records.test.ts",
"test:codegen-json": "playwright codegen https://xxx.xxx.com/ --save-storage=storage/auth_1.json",
"test:api": "playwright test src/e2e-api/ --retries 0 --output build "
}
Затем в общей строке:
pnpm nx test e2e-tests --skip-nx-cache
или же
pnpm nx test:debug e2e-tests --skip-nx-cache
или же
pnpm nx test:headed e2e-tests --skip-nx-cache
-
e2e-tests
это папка назначения e2e, в которойpackage.json
расположен -
--skip-nx-cache
- пропустить вывод кеша nx
Эту командную строку вы можете использовать в любом месте, например в
gitlab-ci.yaml