Конфигурация
- Где Testplane ищет конфигурационный файл
- Как переопределить настройки без изменения конфигурационного файла
- Как работает наследование настроек
- Как настроить параллельный запуск тестов и тайм-ауты
- Как подключить плагины
Введение
Testplane настраивается тремя способами: через конфигурационный файл, переменные окружения и аргументы командной строки.
Конфигурационный файл — основной источник настроек: в нём указывают браузеры, пути к тестам, параллельность, плагины и тайм-ауты. Переменные окружения и CLI-аргументы позволяют переопределить отдельные параметры б ез изменения файла, это удобно для CI/CD или локальных экспериментов.
Полный справочник параметров см. в документации по конфигурации.
Конфигурационный файл
При запуске Testplane ищет конфигурационный файл в текущей рабочей директории. Поддерживаются следующие имена файлов (в порядке приоритета):
.testplane.conf.ts.testplane.conf.jstestplane.config.tstestplane.config.jstestplane.config.ctstestplane.config.cjs
Если нужно использовать конфиг из другого места, укажите путь через опцию --config:
npx testplane --config ./configs/testplane.local.ts
Способы задания параметров
Параметры конфигурации Testplane можно задавать тремя способами:
- Файл конфигурации: основной способ, подходит для большинства настроек
- Переменные окружения: удобно для CI/CD и чувствительных данных
- Аргументы CLI: для быстрого переопределения при запуске
Переопределение через переменные окружения
Любой параметр конфигурации можно переопределить через переменные окружения. Имя переменной формируется из имени параметра в конфиге:
- Замените
camelCaseнаsnake_case(например,baseUrl→base_url) - Для вложенных параметров соедините все уровни через
_ - Добавьте префикс
testplane_
# gridUrl в конфиге → testplane_grid_url
testplane_grid_url=local npx testplane
# browsers.firefox.headless в конфиге → testplane_browsers_firefox_headless
testplane_browsers_firefox_headless=false npx testplane
Переопределение через CLI
Параметры также можно переопределить через CLI-аргумент:
- Замените
camelCaseнаkebab-case(например,baseUrl→base-url) - Для вложенных параметров соедините все уровни через дефис
- Добавьте
--в начале
# gridUrl в конфиге → --grid-url в CLI
npx testplane --grid-url local
# browsers.firefox.headless в конфиге → --browsers-firefox-headless в CLI
npx testplane --browsers-firefox-headless false
Приоритет параметров
При конфликте значений применяется следующий приоритет (от высшего к низшему):
| Приоритет | Источник | Пример |
|---|---|---|
| 1 | CLI аргумент | --base-url http://example.com |
| 2 | Переменная окружения | testplane_base_url=http://example.com |
| 3 | Файл конфигурации | baseUrl: "http://example.com" |
| 4 | Значение по умо лчанию | — |
Наследование параметров
Testplane поддерживает каскадное наследование параметров: настройки, заданные на корневом уровне конфига, применяются ко всем браузерам. Браузеры могут переопределять эти значения.
Пример наследования
import type { ConfigInput } from "testplane";
export default {
// Корневые настройки — применяются ко всем браузерам
baseUrl: "http://localhost:3000",
retry: 2,
sessionsPerBrowser: 3,
browsers: {
chrome: {
// Наследует retry: 2 и sessionsPerBrowser: 3
desiredCapabilities: {
browserName: "chrome",
},
},
firefox: {
// Переопределяет retry, наследует sessionsPerBrowser: 3
retry: 5,
desiredCapabilities: {
browserName: "firefox",
},
},
},
// ...
} satisfies ConfigInput;
В этом примере:
- Chrome получит
retry: 2иsessionsPerBrowser: 3(наследование) - Firefox получит
retry: 5(переопределение) иsessionsPerBrowser: 3(наследование)
Единственный параметр, который нельзя вынести на корневой уровень — это desiredCapabilities.
Он должен быть задан для каждого браузера отдельно.
Базовые параметры
Ретраи (retry)
Параметр retry определяет, сколько раз Testplane будет перезапускать упавший тест.
import type { ConfigInput } from "testplane";
export default {
// Глобальное значение для всех браузеров
retry: 2,
browsers: {
chrome: {
// Для нестабильного браузера можно увеличить
retry: 5,
desiredCapabilities: { browserName: "chrome" },
},
},
// ...
} satisfies ConfigInput;
Расположение тестовых файлов
Наборы тестовых файлов и браузеры для их запуска указываются в секции sets:
import type { ConfigInput } from "testplane";
export default {
sets: {
desktop: {
// Пути к тестам
files: ["tests/desktop/**/*.test.ts"],
browsers: ["chrome", "firefox"],
},
mobile: {
files: ["tests/mobile/**/*.test.ts"],
// Можно исключить файлы
ignoreFiles: ["tests/mobile/**/*.skip.ts"],
browsers: ["iphone", "android"],
},
},
// ...
} satisfies ConfigInput;
Запуск конкретного сета:
npx testplane --set desktop
Подробнее о сетах см. в документации по sets.
Dev Server
Секция devServer позволяет автоматически зап ускать сервер разработки перед тестами:
import type { ConfigInput } from "testplane";
const SERVER_PORT = 3000;
export default {
devServer: {
command: "npm run dev",
env: { PORT: SERVER_PORT },
reuseExisting: true,
readinessProbe: {
url: `http://localhost:${SERVER_PORT}/health`,
},
},
baseUrl: "http://localhost:3000",
// ...
} satisfies ConfigInput;
Testplane запустит команду и дождётся готовности сервера по указанному URL.
Секция devServer только запускает сервер. Не забудьте также настроить baseUrl.
При использовании reuseExisting: true обязательно укажите readinessProbe.url: Testplane
проверит, запущен ли сервер, и не будет запускать новый.
Подробнее см. в документации по devServer.
Параллельность выполнения
Testplane запускает тесты параллельно, что значительно ускоряет прогон. Для настройки параллельности используются два основных параметра: sessionsPerBrowser и workers.
sessionsPerBrowserопределяет максимальное число параллельных браузерных сессий для каждого браузераworkersопределяет число воркер-процессов Node.js для параллельного выполнения тестов
import type { ConfigInput } from "testplane";
export default {
browsers: {
chrome: {
sessionsPerBrowser: 5,
desiredCapabilities: {
browserName: "chrome",
},
},
firefox: {
sessionsPerBrowser: 3,
desiredCapabilities: {
browserName: "firefox",
},
},
},
system: {
workers: 4,
},
// ...
} satisfies ConfigInput;
В этом примере Testplane может запустить до 5 параллельных сессий Chrome и до 3 сессий Firefox, распределяя тесты между 4 воркер-процессами.