Как интегрировать движок Playwright в нагрузочные тесты артиллерии?Javascript

Форум по Javascript
Ответить
Anonymous
 Как интегрировать движок Playwright в нагрузочные тесты артиллерии?

Сообщение Anonymous »

Я пытаюсь интегрировать движок Artillery's Playwright для своих нагрузочных тестов.
Оба пакета упакованы в 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:3585:27
at /workspace/node_modules/lodash/lodash.js:4967:15
at baseForOwn (/workspace/node_modules/lodash/lodash.js:3032:24)
at /workspace/node_modules/lodash/lodash.js:4936:18
at baseMap (/workspace/node_modules/lodash/lodash.js:3584:7)
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»