mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[8.18] [scout] unique runId for reporting, disabled failed test reporter locally (#209507) (#210087)
# Backport This will backport the following commits from `main` to `8.18`: - [[scout] unique runId for reporting, disabled failed test reporter locally (#209507)](https://github.com/elastic/kibana/pull/209507) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Dzmitry Lemechko","email":"dzmitry.lemechko@elastic.co"},"sourceCommit":{"committedDate":"2025-02-05T15:35:26Z","message":"[scout] unique runId for reporting, disabled failed test reporter locally (#209507)\n\n## Summary\r\n\r\nThis PR makes few changes to scout reporter:\r\n\r\nRecently I found out that Playwright load configuration file _multiple\r\ntimes_:\r\n- first time after you run `npx playwright test -c ...`\r\n- on every worker start\r\n\r\nlog before:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 18f35f735a10155c\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 2633b4e4c20afa15\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWith our current logic unique `runId` will be generated on each\r\nconfiguration load, meaning for parallel run we will report failures in\r\ndifferent directories instead of the same one.\r\n\r\nPlaywright doesn't expose any unique identifier for the run, so we have\r\ndo something similar described in\r\n\r\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\r\n\r\nlog after fix:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWe also had a chat with @dolaru and agreed that Scout reporters to be\r\ndisabled for local test run. Few reasons:\r\n- Scout custom reporting targets CI execution: events-based reporter was\r\nalready disabled\r\n- Failed test reporter purpose is to provide html boilerplate to be\r\nannotated in pipeline build\r\n- When you run tests with IDE playwright plugin it provides its own\r\nreporter / history, should be enough.","sha":"6635fe501c307d567afa71a346fc91a7675e3cc5","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","backport:prev-minor","backport:prev-major","test:scout","v9.1.0"],"title":"[scout] unique runId for reporting, disabled failed test reporter locally","number":209507,"url":"https://github.com/elastic/kibana/pull/209507","mergeCommit":{"message":"[scout] unique runId for reporting, disabled failed test reporter locally (#209507)\n\n## Summary\r\n\r\nThis PR makes few changes to scout reporter:\r\n\r\nRecently I found out that Playwright load configuration file _multiple\r\ntimes_:\r\n- first time after you run `npx playwright test -c ...`\r\n- on every worker start\r\n\r\nlog before:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 18f35f735a10155c\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 2633b4e4c20afa15\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWith our current logic unique `runId` will be generated on each\r\nconfiguration load, meaning for parallel run we will report failures in\r\ndifferent directories instead of the same one.\r\n\r\nPlaywright doesn't expose any unique identifier for the run, so we have\r\ndo something similar described in\r\n\r\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\r\n\r\nlog after fix:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWe also had a chat with @dolaru and agreed that Scout reporters to be\r\ndisabled for local test run. Few reasons:\r\n- Scout custom reporting targets CI execution: events-based reporter was\r\nalready disabled\r\n- Failed test reporter purpose is to provide html boilerplate to be\r\nannotated in pipeline build\r\n- When you run tests with IDE playwright plugin it provides its own\r\nreporter / history, should be enough.","sha":"6635fe501c307d567afa71a346fc91a7675e3cc5"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"9.0","label":"v9.0.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/209808","number":209808,"state":"MERGED","mergeCommit":{"sha":"2c04505bd6ad9db59e0ea3aa617d649b41134294","message":"[9.0] [scout] unique runId for reporting, disabled failed test reporter locally (#209507) (#209808)\n\n# Backport\n\nThis will backport the following commits from `main` to `9.0`:\n- [[scout] unique runId for reporting, disabled failed test reporter\nlocally (#209507)](https://github.com/elastic/kibana/pull/209507)\n\n<!--- Backport version: 9.4.3 -->\n\n### Questions ?\nPlease refer to the [Backport tool\ndocumentation](https://github.com/sqren/backport)\n\n<!--BACKPORT [{\"author\":{\"name\":\"Dzmitry\nLemechko\",\"email\":\"dzmitry.lemechko@elastic.co\"},\"sourceCommit\":{\"committedDate\":\"2025-02-05T15:35:26Z\",\"message\":\"[scout]\nunique runId for reporting, disabled failed test reporter locally\n(#209507)\\n\\n## Summary\\r\\n\\r\\nThis PR makes few changes to scout\nreporter:\\r\\n\\r\\nRecently I found out that Playwright load configuration\nfile _multiple\\r\\ntimes_:\\r\\n- first time after you run `npx playwright\ntest -c ...`\\r\\n- on every worker start\\r\\n\\r\\nlog\nbefore:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 18f35f735a10155c\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n2633b4e4c20afa15\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch\n@ess\\r\\n```\\r\\n\\r\\nWith our current logic unique `runId` will be\ngenerated on each\\r\\nconfiguration load, meaning for parallel run we\nwill report failures in\\r\\ndifferent directories instead of the same\none.\\r\\n\\r\\nPlaywright doesn't expose any unique identifier for the run,\nso we have\\r\\ndo something similar described\nin\\r\\n\\r\\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\\r\\n\\r\\nlog\nafter fix:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 310a576f32d3b8a5\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n310a576f32d3b8a5\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch @ess\\r\\n```\\r\\n\\r\\nWe\nalso had a chat with @dolaru and agreed that Scout reporters to\nbe\\r\\ndisabled for local test run. Few reasons:\\r\\n- Scout custom\nreporting targets CI execution: events-based reporter was\\r\\nalready\ndisabled\\r\\n- Failed test reporter purpose is to provide html\nboilerplate to be\\r\\nannotated in pipeline build\\r\\n- When you run tests\nwith IDE playwright plugin it provides its own\\r\\nreporter / history,\nshould be\nenough.\",\"sha\":\"6635fe501c307d567afa71a346fc91a7675e3cc5\",\"branchLabelMapping\":{\"^v9.1.0$\":\"main\",\"^v8.19.0$\":\"8.x\",\"^v(\\\\d+).(\\\\d+).\\\\d+$\":\"$1.$2\"}},\"sourcePullRequest\":{\"labels\":[\"release_note:skip\",\"v9.0.0\",\"backport:prev-minor\",\"test:scout\",\"v9.1.0\"],\"title\":\"[scout]\nunique runId for reporting, disabled failed test reporter\nlocally\",\"number\":209507,\"url\":\"https://github.com/elastic/kibana/pull/209507\",\"mergeCommit\":{\"message\":\"[scout]\nunique runId for reporting, disabled failed test reporter locally\n(#209507)\\n\\n## Summary\\r\\n\\r\\nThis PR makes few changes to scout\nreporter:\\r\\n\\r\\nRecently I found out that Playwright load configuration\nfile _multiple\\r\\ntimes_:\\r\\n- first time after you run `npx playwright\ntest -c ...`\\r\\n- on every worker start\\r\\n\\r\\nlog\nbefore:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 18f35f735a10155c\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n2633b4e4c20afa15\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch\n@ess\\r\\n```\\r\\n\\r\\nWith our current logic unique `runId` will be\ngenerated on each\\r\\nconfiguration load, meaning for parallel run we\nwill report failures in\\r\\ndifferent directories instead of the same\none.\\r\\n\\r\\nPlaywright doesn't expose any unique identifier for the run,\nso we have\\r\\ndo something similar described\nin\\r\\n\\r\\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\\r\\n\\r\\nlog\nafter fix:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 310a576f32d3b8a5\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n310a576f32d3b8a5\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch @ess\\r\\n```\\r\\n\\r\\nWe\nalso had a chat with @dolaru and agreed that Scout reporters to\nbe\\r\\ndisabled for local test run. Few reasons:\\r\\n- Scout custom\nreporting targets CI execution: events-based reporter was\\r\\nalready\ndisabled\\r\\n- Failed test reporter purpose is to provide html\nboilerplate to be\\r\\nannotated in pipeline build\\r\\n- When you run tests\nwith IDE playwright plugin it provides its own\\r\\nreporter / history,\nshould be\nenough.\",\"sha\":\"6635fe501c307d567afa71a346fc91a7675e3cc5\"}},\"sourceBranch\":\"main\",\"suggestedTargetBranches\":[\"9.0\"],\"targetPullRequestStates\":[{\"branch\":\"9.0\",\"label\":\"v9.0.0\",\"branchLabelMappingKey\":\"^v(\\\\d+).(\\\\d+).\\\\d+$\",\"isSourceBranch\":false,\"state\":\"NOT_CREATED\"},{\"branch\":\"main\",\"label\":\"v9.1.0\",\"branchLabelMappingKey\":\"^v9.1.0$\",\"isSourceBranch\":true,\"state\":\"MERGED\",\"url\":\"https://github.com/elastic/kibana/pull/209507\",\"number\":209507,\"mergeCommit\":{\"message\":\"[scout]\nunique runId for reporting, disabled failed test reporter locally\n(#209507)\\n\\n## Summary\\r\\n\\r\\nThis PR makes few changes to scout\nreporter:\\r\\n\\r\\nRecently I found out that Playwright load configuration\nfile _multiple\\r\\ntimes_:\\r\\n- first time after you run `npx playwright\ntest -c ...`\\r\\n- on every worker start\\r\\n\\r\\nlog\nbefore:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 18f35f735a10155c\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n2633b4e4c20afa15\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch\n@ess\\r\\n```\\r\\n\\r\\nWith our current logic unique `runId` will be\ngenerated on each\\r\\nconfiguration load, meaning for parallel run we\nwill report failures in\\r\\ndifferent directories instead of the same\none.\\r\\n\\r\\nPlaywright doesn't expose any unique identifier for the run,\nso we have\\r\\ndo something similar described\nin\\r\\n\\r\\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\\r\\n\\r\\nlog\nafter fix:\\r\\n\\r\\n```\\r\\n[main][~/github/kibana]$ npx playwright test\n--config\nx-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\\r\\n[createPlaywrightConfig]\ncalled with runId: 310a576f32d3b8a5\\r\\n\\r\\nRunning 1 test using 1\nworker\\r\\n\\r\\n[createPlaywrightConfig] called with runId:\n310a576f32d3b8a5\\r\\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps ›\nFull screen mode @svlSecurity @svlOblt @svlSearch @ess\\r\\n```\\r\\n\\r\\nWe\nalso had a chat with @dolaru and agreed that Scout reporters to\nbe\\r\\ndisabled for local test run. Few reasons:\\r\\n- Scout custom\nreporting targets CI execution: events-based reporter was\\r\\nalready\ndisabled\\r\\n- Failed test reporter purpose is to provide html\nboilerplate to be\\r\\nannotated in pipeline build\\r\\n- When you run tests\nwith IDE playwright plugin it provides its own\\r\\nreporter / history,\nshould be enough.\",\"sha\":\"6635fe501c307d567afa71a346fc91a7675e3cc5\"}}]}]\nBACKPORT-->\n\nCo-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>"}},{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/209507","number":209507,"mergeCommit":{"message":"[scout] unique runId for reporting, disabled failed test reporter locally (#209507)\n\n## Summary\r\n\r\nThis PR makes few changes to scout reporter:\r\n\r\nRecently I found out that Playwright load configuration file _multiple\r\ntimes_:\r\n- first time after you run `npx playwright test -c ...`\r\n- on every worker start\r\n\r\nlog before:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 18f35f735a10155c\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 2633b4e4c20afa15\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWith our current logic unique `runId` will be generated on each\r\nconfiguration load, meaning for parallel run we will report failures in\r\ndifferent directories instead of the same one.\r\n\r\nPlaywright doesn't expose any unique identifier for the run, so we have\r\ndo something similar described in\r\n\r\nhttps://github.com/microsoft/playwright/issues/28941#issuecomment-1888008102\r\n\r\nlog after fix:\r\n\r\n```\r\n[main][~/github/kibana]$ npx playwright test --config x-pack/platform/plugins/shared/maps/ui_tests/playwright.config.ts\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n\r\nRunning 1 test using 1 worker\r\n\r\n[createPlaywrightConfig] called with runId: 310a576f32d3b8a5\r\n[chromium] › full_screen_mode.spec.ts:28:9 › Maps › Full screen mode @svlSecurity @svlOblt @svlSearch @ess\r\n```\r\n\r\nWe also had a chat with @dolaru and agreed that Scout reporters to be\r\ndisabled for local test run. Few reasons:\r\n- Scout custom reporting targets CI execution: events-based reporter was\r\nalready disabled\r\n- Failed test reporter purpose is to provide html boilerplate to be\r\nannotated in pipeline build\r\n- When you run tests with IDE playwright plugin it provides its own\r\nreporter / history, should be enough.","sha":"6635fe501c307d567afa71a346fc91a7675e3cc5"}}]}] BACKPORT--> Co-authored-by: Dzmitry Lemechko <dzmitry.lemechko@elastic.co>
This commit is contained in:
parent
d07a9d6d2f
commit
443bfc7537
3 changed files with 69 additions and 15 deletions
|
@ -26,5 +26,7 @@ export const scoutPlaywrightReporter = (
|
|||
export const scoutFailedTestsReporter = (
|
||||
options?: ScoutPlaywrightReporterOptions
|
||||
): ReporterDescription => {
|
||||
return ['@kbn/scout-reporting/src/reporting/playwright/failed_test', options];
|
||||
return SCOUT_REPORTER_ENABLED
|
||||
? ['@kbn/scout-reporting/src/reporting/playwright/failed_test', options]
|
||||
: ['null'];
|
||||
};
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
* License v3.0 only", or the "Server Side Public License, v 1".
|
||||
*/
|
||||
|
||||
import { SCOUT_REPORTER_ENABLED, SCOUT_SERVERS_ROOT } from '@kbn/scout-info';
|
||||
import { SCOUT_SERVERS_ROOT } from '@kbn/scout-info';
|
||||
import { scoutPlaywrightReporter, scoutFailedTestsReporter } from '@kbn/scout-reporting';
|
||||
import { createPlaywrightConfig } from './create_config';
|
||||
import { VALID_CONFIG_MARKER } from '../types';
|
||||
import { generateTestRunId } from '@kbn/scout-reporting';
|
||||
|
@ -15,18 +16,26 @@ import { generateTestRunId } from '@kbn/scout-reporting';
|
|||
jest.mock('@kbn/scout-reporting', () => ({
|
||||
...jest.requireActual('@kbn/scout-reporting'),
|
||||
generateTestRunId: jest.fn(),
|
||||
scoutPlaywrightReporter: jest.fn(),
|
||||
scoutFailedTestsReporter: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('createPlaywrightConfig', () => {
|
||||
const mockedRunId = 'mocked-run-id';
|
||||
const mockGenerateTestRunId = generateTestRunId as jest.Mock;
|
||||
const mockedScoutPlaywrightReporter = scoutPlaywrightReporter as jest.Mock;
|
||||
const mockedScoutFailedTestsReporter = scoutFailedTestsReporter as jest.Mock;
|
||||
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
delete process.env.TEST_RUN_ID;
|
||||
});
|
||||
|
||||
it('should return a valid default Playwright configuration', () => {
|
||||
const testRunId = 'test-run-id';
|
||||
mockGenerateTestRunId.mockImplementationOnce(() => testRunId);
|
||||
mockGenerateTestRunId.mockImplementationOnce(() => mockedRunId);
|
||||
// Scout reporters are disabled by default
|
||||
mockedScoutPlaywrightReporter.mockReturnValueOnce(['null']);
|
||||
mockedScoutFailedTestsReporter.mockReturnValueOnce(['null']);
|
||||
|
||||
const testDir = './my_tests';
|
||||
const config = createPlaywrightConfig({ testDir });
|
||||
|
@ -48,16 +57,8 @@ describe('createPlaywrightConfig', () => {
|
|||
expect(config.reporter).toEqual([
|
||||
['html', { open: 'never', outputFolder: './output/reports' }],
|
||||
['json', { outputFile: './output/reports/test-results.json' }],
|
||||
SCOUT_REPORTER_ENABLED
|
||||
? [
|
||||
'@kbn/scout-reporting/src/reporting/playwright/events',
|
||||
{ name: 'scout-playwright', runId: testRunId },
|
||||
]
|
||||
: ['null'],
|
||||
[
|
||||
'@kbn/scout-reporting/src/reporting/playwright/failed_test',
|
||||
{ name: 'scout-playwright-failed-tests', runId: testRunId },
|
||||
],
|
||||
['null'],
|
||||
['null'],
|
||||
]);
|
||||
expect(config.timeout).toBe(60000);
|
||||
expect(config.expect?.timeout).toBe(10000);
|
||||
|
@ -65,6 +66,35 @@ describe('createPlaywrightConfig', () => {
|
|||
expect(config.projects![0].name).toEqual('chromium');
|
||||
});
|
||||
|
||||
it('should return a Playwright configuration with Scout reporters', () => {
|
||||
mockGenerateTestRunId.mockImplementationOnce(() => mockedRunId);
|
||||
mockedScoutPlaywrightReporter.mockReturnValueOnce([
|
||||
'@kbn/scout-reporting/src/reporting/playwright/events',
|
||||
{ name: 'scout-playwright', runId: mockedRunId },
|
||||
]);
|
||||
mockedScoutFailedTestsReporter.mockReturnValueOnce([
|
||||
'@kbn/scout-reporting/src/reporting/playwright/failed_test',
|
||||
{ name: 'scout-playwright-failed-tests', runId: mockedRunId },
|
||||
]);
|
||||
|
||||
const testDir = './my_tests';
|
||||
const config = createPlaywrightConfig({ testDir });
|
||||
|
||||
expect(mockGenerateTestRunId).toHaveBeenCalledTimes(1);
|
||||
expect(config.reporter).toEqual([
|
||||
['html', { open: 'never', outputFolder: './output/reports' }],
|
||||
['json', { outputFile: './output/reports/test-results.json' }],
|
||||
[
|
||||
'@kbn/scout-reporting/src/reporting/playwright/events',
|
||||
{ name: 'scout-playwright', runId: mockedRunId },
|
||||
],
|
||||
[
|
||||
'@kbn/scout-reporting/src/reporting/playwright/failed_test',
|
||||
{ name: 'scout-playwright-failed-tests', runId: mockedRunId },
|
||||
],
|
||||
]);
|
||||
});
|
||||
|
||||
it(`should override 'workers' count in Playwright configuration`, () => {
|
||||
const testDir = './my_tests';
|
||||
const workers = 2;
|
||||
|
@ -72,4 +102,18 @@ describe('createPlaywrightConfig', () => {
|
|||
const config = createPlaywrightConfig({ testDir, workers });
|
||||
expect(config.workers).toBe(workers);
|
||||
});
|
||||
|
||||
it('should generate and cache runId in process.env.TEST_RUN_ID', () => {
|
||||
mockGenerateTestRunId.mockReturnValue(mockedRunId);
|
||||
|
||||
// First call to create config
|
||||
createPlaywrightConfig({ testDir: 'tests' });
|
||||
expect(process.env.TEST_RUN_ID).toBe(mockedRunId);
|
||||
|
||||
// Second call (should use the cached value)
|
||||
createPlaywrightConfig({ testDir: 'tests' });
|
||||
|
||||
expect(generateTestRunId).toHaveBeenCalledTimes(1);
|
||||
expect(process.env.TEST_RUN_ID).toBe(mockedRunId);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -17,7 +17,15 @@ import { SCOUT_SERVERS_ROOT } from '@kbn/scout-info';
|
|||
import { ScoutPlaywrightOptions, ScoutTestOptions, VALID_CONFIG_MARKER } from '../types';
|
||||
|
||||
export function createPlaywrightConfig(options: ScoutPlaywrightOptions): PlaywrightTestConfig {
|
||||
const runId = generateTestRunId();
|
||||
/**
|
||||
* Playwright loads the config file multiple times, so we need to generate a unique run id
|
||||
* and store it in the environment to be used across all config function calls.
|
||||
*/
|
||||
let runId = process.env.TEST_RUN_ID;
|
||||
if (!runId) {
|
||||
runId = generateTestRunId();
|
||||
process.env.TEST_RUN_ID = runId;
|
||||
}
|
||||
|
||||
return defineConfig<ScoutTestOptions>({
|
||||
testDir: options.testDir,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue