Оба пакета упакованы в DevContainer на основе инструкций этого вопроса. Я могу выполнять автономные тесты драматурга, а также автономные тесты артиллерийской нагрузки; однако как только я интегрирую Playwright, выполнение теста механизма выполнения завершается неудачно.
Вот соответствующий файл Dockerfile
FROM mcr.microsoft.com/devcontainers/javascript-node:24-bookworm
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Set Playwright browsers path to shared location (outside node_modules)
ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright
USER root
RUN apt-get update && apt-get upgrade -y \
&& rm -rf /var/lib/apt/lists/*
# Install playwright + system libs + browsers
RUN mkdir -p /ms-playwright \
&& npm install -g @playwright/test@1.57.0 \
&& npx playwright install chromium firefox webkit --with-deps \
&& chown -R node:node /ms-playwright
USER node
WORKDIR /workspace
# Install project dependencies
COPY --chown=node:node package.json package-lock.json* ./
RUN npm install
ENV PATH=/workspace/node_modules/.bin:$PATH
CMD ["sleep", "infinity"]
Кроме того, это мой файл package.json:
{
"name": "simple-sample",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
...
"test:load:smoke": "npx artillery run tests/load/smoke.yml",
},
"dependencies": {
...
},
"devDependencies": {
"@faker-js/faker": "^10.0.0",
"@playwright/test": "^1.57.0",
"artillery": "^2.0.27",
"bun-types": "^1.3.0",
"playwright": "^1.57.0"
}
}
Наконец, вы можете увидеть файл Smoke.yml, в который я интегрировал драматурга в качестве механизма исполнения:
config:
target: "{{ $env.SERVER_URL }}:{{ $env.SERVER_PORT }}"
engines:
playwright:
launchOptions:
headless: true
processor: "../helpers/test-helpers.js"
phases:
- duration: 60
arrivalRate: 1
name: "Smoke test - UI validation"
plugins:
ensure:
maxErrorRate: 1 # Max 1% error rate
ensure:
maxErrorRate: 1
scenarios:
- engine: playwright
testFunction: loginUser
flowVariables:
username: "{{ $env.TEST_USER_USERNAME }}"
password: "{{ $env.TEST_USER_PASS }}"
- name: "Health Check"
flow:
- get:
url: "/healthcheck"
expect:
- statusCode: 200
- name: "Login Page Load"
flow:
- get:
url: "/login"
expect:
- statusCode: 200
Когда я запускаю npm runtests:load:smoke в командной строке, я получаю следующие журналы ошибок:
> simple-sample@0.1.0 test:load:smoke
> npx artillery run tests/load/smoke.yml
Test run id: tc5g8_ntkhkjpd7xgk36y9q39drm3zgkq45_5rb3
⠧ WARNING: engine playwright specified but module artillery-engine-playwright could not be loaded
TypeError: Cannot add property $rewriteMetricName, object is not extensible
at new PlaywrightEngine (/workspace/node_modules/artillery-engine-playwright/index.js:47:41)
at loadEngine (/workspace/node_modules/@artilleryio/int-core/lib/runner.js:55:24)
at /workspace/node_modules/lodash/lodash.js
at /workspace/node_modules/lodash/lodash.js:4967:15
at baseForOwn (/workspace/node_modules/lodash/lodash.js
at /workspace/node_modules/lodash/lodash.js:4936:18
at baseMap (/workspace/node_modules/lodash/lodash.js
at lodash.map (/workspace/node_modules/lodash/lodash.js:9622:14)
at loadEngines (/workspace/node_modules/@artilleryio/int-core/lib/runner.js:44:27)
at runner (/workspace/node_modules/@artilleryio/int-core/lib/runner.js:160:44)
Phase started: Smoke test - UI validation (index: 0, duration: 60s) 13:17:48(+0000)
⠋ worker error, id: 1 TypeError: Cannot read properties of undefined (reading '__name')
at /workspace/node_modules/@artilleryio/int-core/lib/runner.js:311:55
at Array.find ()
at /workspace/node_modules/@artilleryio/int-core/lib/runner.js:311:41
at arrayMap (/workspace/node_modules/lodash/lodash.js:653:23)
at lodash.map (/workspace/node_modules/lodash/lodash.js:9622:14)
at runScenario (/workspace/node_modules/@artilleryio/int-core/lib/runner.js:307:36)
at EventEmitter. (/workspace/node_modules/@artilleryio/int-core/lib/runner.js:210:26)
at EventEmitter.emit (/workspace/node_modules/eventemitter3/index.js:181:35)
at UniformProcess. (/workspace/node_modules/@artilleryio/int-core/lib/phases.js:244:10)
at UniformProcess.emit (node:events:508:28)
Подробнее здесь: https://stackoverflow.com/questions/798 ... load-tests
Мобильная версия