[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:
Kibana Machine 2025-02-07 06:42:25 +11:00 committed by GitHub
parent d07a9d6d2f
commit 443bfc7537
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 69 additions and 15 deletions

View file

@ -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'];
};

View file

@ -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);
});
});

View file

@ -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,