Используйте плагин @testplane/chunks, чтобы распараллелить запуск тестов.
Если в вашем проекте большое количество тестов и при этом не хватает мощности отдельных CI-серверов, чтобы выполнить все эти тесты на одном сервере за приемлемое время, то этот плагин — для вас.
Плагин позволяет распараллелить запуск тестов на нескольких серверах. Тем самым ускорив общий прогон тестов. Однако сам плагин не занимается какой-либо оркестрацией, распараллеливанием запуска или слиянием получившихся отдельных отчетов в один итоговый отчет.
Плагин @testplane/chunks
разбивает всегда одним и тем же способом ваш набор тестов на заданное количество порций (chunks) и отдает Testplane на запуск только ту порцию, которую вы указали. Здесь ключевое — «всегда одним и тем же способом». То есть операция разбиения на порции (чанки) является идемпотентной.
Вы можете организовать в своем CI переиспользование результатов запусков тестов из отдельных чанков при общем перезапуске. Это позволит вам сэкономить время при перезапуске всех тестов, так как прогоняться будут только те чанки, в которых есть упавшие тесты.
Например, в вашем проекте есть 1 тысяча тестов. Вы разбили эти тесты на 10 чанков по 100 тестов в каждом. Это означает, что при запуске тестов в вашем пулл-реквесте, у вас будет 10 Testplane, запущенных одновременно на 10 серверах. Каждый Testplane выполнит по 100 тестов. В каких-то из этих запусков тесты могут упасть. Например, 2 из 10 чанков у вас упали. Вы решаете перезапустить прогон тестов, рассчитывая, что на этот раз тесты пройдут. Так вот, при перезапуске Testplane с указанием номера упавшего чанка, вы можете быть абсолютно уверены, что плагин @testplane/chunks
сформирует для Testplane точно такую же порцию тестов как и в прошлый свой запуск.
Организуя перезапуск тестов в своем CI, помните, что для переиспользования запусков отдельных чанков, исходное количество тестов, их имена, или количество браузеров, в которых они запускаются, не должны меняться между запусками. Иначе чанки в новом запуске уже не будут такими же, как в прошлый раз. И хотя формально вы получите то же количество чанков, что и в прошлый раз, их содержимое при этом будет отличаться. А значит переиспользование прошлых результатов окажется некорректным.
Нужно понимать, что ускорение возможно только за счет того, что тесты будут запускаться на большем количестве железа.
Если у вас нет в наличии серверов, которые можно было бы выделить под параллельный запуск сразу нескольких Testplane, то разбивать тесты на соответствующее количество чанков смысла нет. Если CI будет ждать освобождения какого-либо сервера, чтобы запустить очередную порцию тестов, то ваш параллельный запуск превратится в последовательный, и никакого ускорения вы не получите. Даже наоборот — произойдет замедление из-за накладных расходов на отдельные запуски Testplane и формирование итогового отчета.
То есть параллельность — количество чанков, на которые вы разбиваете свои тесты — обязательно должна быть обеспечена соответствующим количеством доступного железа.
Добавьте в свой проект плагин html-reporter.
Используйте команду merge-reports
, которую html-reporter
добавляет к CLI Testplane, чтобы слить все получившиеся в отдельных чанках отчеты в один итоговый отчет.
npm install -D @testplane/chunks
Необходимо подключить плагин в разделе plugins
конфига Testplane:
module.exports = {
plugins: {
'@testplane/chunks': {
count: 7, // Разбить тесты на 7 порций (чанков)
run: 1 // Запустить первую порцию
},
// другие плагины Testplane...
},
// другие настройки Testplane...
};
Можно не задавать параметр run — в конфиге плагина, так как при параллельных запусках Testplane для каждого запуска вы будете указывать свой номер порции (run). И этот номер нужно будет передавать либо через опцию командной строки, либо через переменную окружения (см. «Передачу параметров через CLI»).
Параметр | Тип | По умолчанию | Описание |
---|---|---|---|
enabled | Boolean | true | Включить / отключить плагин. |
count | Number | 1 | Количество порций (чанков), на которые нужно разбить набор тестов. |
run | Number | 1 | Номер чанка, тесты из которого нужно запустить. |
Все параметры плагина, которые можно определить в конфиге, можно также передать в виде опций командной строки или через переменные окружения во время запуска Testplane. Используйте префикс --chunks-
для опций командной строки и testplane_chunks_
— для переменных окружения. Например:
npx testplane --chunks-count 10 --chunks-run 1
testplane_chunks_count=10 testplane_chunks_run=1 npx testplane