Тест драматурга с 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

Удалить существующее приложение e2enx 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

Другие вопросы по тегам