-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[kbn-scout] Add Synthtrace as a fixture #210505
Conversation
/ci |
/ci |
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
/ci |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: is there a way to test atm or do we need the fixture from the other draft (I tested there but wanted to check here if it's possible - it should work the same so I can just copy it from there, just wanted to fist check with you if we want to test it again)
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
It should be the same, the only change I made is for the naming, so the synthtrace clients that we expose are: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The code LGTM 💯 Thanks for the fixes!
Tested parallelism using this playwright config as it was already configured, and created a few tests using synthtrace, works fine ✅ |
Tested all clients and they are working ✅ |
Pinging @elastic/obs-ux-infra_services-team (Team:obs-ux-infra_services) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @rmyz , nice work!
I left questions to better understand the use case and hopefully make few improvements.
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/test/synthtrace/index.ts
Outdated
Show resolved
Hide resolved
packages/kbn-scout/src/playwright/fixtures/parallel_run_fixtures.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the changes! just a couple questions
if (Object.hasOwn(data, key)) { | ||
const typedKey = key as keyof SynthtraceIngestionData; | ||
if (data[typedKey].length > 0) { | ||
const client = await getClient(typedKey, esClient, kbnUrl, scoutConfig.auth, log); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: getSynthtraceClient
to make this name more specific.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed
const kbnUrl = scoutConfig.hosts.kibana; | ||
|
||
for (const key of Object.keys(data)) { | ||
if (Object.hasOwn(data, key)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to check if Object.hasOwn(data, key)
? It's already iterating over data
keys.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removed, not needed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. thanks for applying the suggestions
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sorry for the late review. Nice job with synthtrace 🚀
}) | ||
); | ||
} catch (e) { | ||
log.debug(`[setup] error ingesting ${key} synthtrace data`, e); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
log.debug(`[setup] error ingesting ${key} synthtrace data`, e); | |
log.error(`[setup] error ingesting ${key} synthtrace data`, e); |
nit: it can be logged as error here
💚 Build Succeeded
Metrics [docs]Public APIs missing comments
Public APIs missing exports
History
cc @rmyz |
Starting backport for target branches: 8.x, 9.0 https://github.com/elastic/kibana/actions/runs/13344704434 |
Starting backport for target branches: 8.x, 9.0 https://github.com/elastic/kibana/actions/runs/13344704463 |
## Summary Closes elastic#210340 This PR adds synthtrace clients to scout as a test fixture, so you can use it in your test to generate data. The clients added were `apmSynthtraceEsClient`, `infraSynthtraceEsClient` and `otelSynthtraceEsClient`. ## How to use them in parallel tests As `synthtrace` ingests data into our indices, and sequential runs would be the perfect way to introduce flakiness in our tests, there is a better way to ingest data, using a hook, at the setup phase with `globalSetup`. We need to create a `global_setup.ts` file and link it into our playwright config. Then we can use something like ``` async function globalSetup(config: FullConfig) { const data = { apm: [ opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], infra: [ generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }), ], otel: [ sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], }; return ingestSynthtraceDataHook(config, data); } ``` Each key (apm, infra, otel) accepts an array of generators. ## How to use them in sequential tests > [!WARNING] > This should not be the standard behaviour, we should embrace parallelism and use sequential testing when there is no other way. ### apmSynthtraceEsClient ```ts test.before( async ({ apmSynthtraceEsClient }) => { await apmSynthtraceEsClient.index( opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [opbeans file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts) used in the example. ### otelSynthtraceEsClient ```ts test.before( async ({otelSynthtraceEsClient }) => { await otelSynthtraceEsClient.index( sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [sendotlp file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts) which will create the data. ### infraSynthtraceEsClient ```ts test.before( async ({ infraSynthtraceEsClient }) => { await infraSynthtraceEsClient.index( generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }) ); } ); ``` [generateHosts file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82) used to generate data. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit e21c5d0)
## Summary Closes elastic#210340 This PR adds synthtrace clients to scout as a test fixture, so you can use it in your test to generate data. The clients added were `apmSynthtraceEsClient`, `infraSynthtraceEsClient` and `otelSynthtraceEsClient`. ## How to use them in parallel tests As `synthtrace` ingests data into our indices, and sequential runs would be the perfect way to introduce flakiness in our tests, there is a better way to ingest data, using a hook, at the setup phase with `globalSetup`. We need to create a `global_setup.ts` file and link it into our playwright config. Then we can use something like ``` async function globalSetup(config: FullConfig) { const data = { apm: [ opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], infra: [ generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }), ], otel: [ sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], }; return ingestSynthtraceDataHook(config, data); } ``` Each key (apm, infra, otel) accepts an array of generators. ## How to use them in sequential tests > [!WARNING] > This should not be the standard behaviour, we should embrace parallelism and use sequential testing when there is no other way. ### apmSynthtraceEsClient ```ts test.before( async ({ apmSynthtraceEsClient }) => { await apmSynthtraceEsClient.index( opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [opbeans file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts) used in the example. ### otelSynthtraceEsClient ```ts test.before( async ({otelSynthtraceEsClient }) => { await otelSynthtraceEsClient.index( sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [sendotlp file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts) which will create the data. ### infraSynthtraceEsClient ```ts test.before( async ({ infraSynthtraceEsClient }) => { await infraSynthtraceEsClient.index( generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }) ); } ); ``` [generateHosts file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82) used to generate data. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit e21c5d0)
💔 Some backports could not be created
Note: Successful backport PRs will be merged automatically after passing CI. Manual backportTo create the backport manually run:
Questions ?Please refer to the Backport tool documentation |
1 similar comment
💔 Some backports could not be created
Note: Successful backport PRs will be merged automatically after passing CI. Manual backportTo create the backport manually run:
Questions ?Please refer to the Backport tool documentation |
# Backport This will backport the following commits from `main` to `9.0`: - [[kbn-scout] Add Synthtrace as a fixture (#210505)](#210505) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Sergi Romeu","email":"sergi.romeu@elastic.co"},"sourceCommit":{"committedDate":"2025-02-14T18:52:22Z","message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","apm:synthtrace","Team:obs-ux-infra_services","backport:version","test:scout","v9.1.0","v8.19.0"],"title":"[kbn-scout] Add Synthtrace as a fixture","number":210505,"url":"https://github.com/elastic/kibana/pull/210505","mergeCommit":{"message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f"}},"sourceBranch":"main","suggestedTargetBranches":["9.0","8.x"],"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/210505","number":210505,"mergeCommit":{"message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT--> Co-authored-by: Sergi Romeu <sergi.romeu@elastic.co>
Starting backport for target branches: 8.x, 9.0 https://github.com/elastic/kibana/actions/runs/13386246157 |
## Summary Closes elastic#210340 This PR adds synthtrace clients to scout as a test fixture, so you can use it in your test to generate data. The clients added were `apmSynthtraceEsClient`, `infraSynthtraceEsClient` and `otelSynthtraceEsClient`. ## How to use them in parallel tests As `synthtrace` ingests data into our indices, and sequential runs would be the perfect way to introduce flakiness in our tests, there is a better way to ingest data, using a hook, at the setup phase with `globalSetup`. We need to create a `global_setup.ts` file and link it into our playwright config. Then we can use something like ``` async function globalSetup(config: FullConfig) { const data = { apm: [ opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], infra: [ generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }), ], otel: [ sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }), ], }; return ingestSynthtraceDataHook(config, data); } ``` Each key (apm, infra, otel) accepts an array of generators. ## How to use them in sequential tests > [!WARNING] > This should not be the standard behaviour, we should embrace parallelism and use sequential testing when there is no other way. ### apmSynthtraceEsClient ```ts test.before( async ({ apmSynthtraceEsClient }) => { await apmSynthtraceEsClient.index( opbeans({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [opbeans file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts) used in the example. ### otelSynthtraceEsClient ```ts test.before( async ({otelSynthtraceEsClient }) => { await otelSynthtraceEsClient.index( sendotlp({ from: new Date(start).getTime(), to: new Date(end).getTime(), }) ); } ); ``` [sendotlp file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts) which will create the data. ### infraSynthtraceEsClient ```ts test.before( async ({ infraSynthtraceEsClient }) => { await infraSynthtraceEsClient.index( generateHosts({ from: new Date(start).toISOString(), to: new Date(end).toISOString(), }) ); } ); ``` [generateHosts file](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82) used to generate data. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit e21c5d0)
💔 Some backports could not be created
Note: Successful backport PRs will be merged automatically after passing CI. Manual backportTo create the backport manually run:
Questions ?Please refer to the Backport tool documentation |
# Backport This will backport the following commits from `main` to `8.x`: - [[kbn-scout] Add Synthtrace as a fixture (#210505)](#210505) <!--- Backport version: 9.6.5 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Sergi Romeu","email":"sergi.romeu@elastic.co"},"sourceCommit":{"committedDate":"2025-02-14T18:52:22Z","message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","apm:synthtrace","Team:obs-ux-infra_services","backport:version","test:scout","v9.1.0","v8.19.0"],"title":"[kbn-scout] Add Synthtrace as a fixture","number":210505,"url":"https://github.com/elastic/kibana/pull/210505","mergeCommit":{"message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f"}},"sourceBranch":"main","suggestedTargetBranches":["8.x"],"targetPullRequestStates":[{"branch":"9.0","label":"v9.0.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/211351","number":211351,"state":"MERGED","mergeCommit":{"sha":"5b6ff1cd6e7cd703ed66337ee743a08abf0fa7a8","message":"[9.0] [kbn-scout] Add Synthtrace as a fixture (#210505) (#211351)\n\n# Backport\n\nThis will backport the following commits from `main` to `9.0`:\n- [[kbn-scout] Add Synthtrace as a fixture\n(#210505)](https://github.com/elastic/kibana/pull/210505)\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\":\"Sergi\nRomeu\",\"email\":\"sergi.romeu@elastic.co\"},\"sourceCommit\":{\"committedDate\":\"2025-02-14T18:52:22Z\",\"message\":\"[kbn-scout]\nAdd Synthtrace as a fixture (#210505)\\n\\n## Summary\\n\\nCloses\n#210340\\n\\nThis PR adds synthtrace clients to scout as a test fixture,\nso you can\\nuse it in your test to generate data.\\n\\nThe clients added\nwere `apmSynthtraceEsClient`,\\n`infraSynthtraceEsClient` and\n`otelSynthtraceEsClient`.\\n\\n## How to use them in parallel tests\\n\\nAs\n`synthtrace` ingests data into our indices, and sequential runs\nwould\\nbe the perfect way to introduce flakiness in our tests, there is\na\\nbetter way to ingest data, using a hook, at the setup phase\nwith\\n`globalSetup`.\\nWe need to create a `global_setup.ts` file and\nlink it into our\\nplaywright config.\\nThen we can use something\nlike\\n```\\nasync function globalSetup(config: FullConfig) {\\n const data\n= {\\n apm: [\\n opbeans({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n infra: [\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n }),\\n\n],\\n otel: [\\n sendotlp({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n };\\n\\n return\ningestSynthtraceDataHook(config, data);\\n}\\n```\\nEach key (apm, infra,\notel) accepts an array of generators.\\n\\n## How to use them in\nsequential tests\\n> [!WARNING] \\n> This should not be the standard\nbehaviour, we should embrace\\nparallelism and use sequential testing\nwhen there is no other way.\\n\\n### apmSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ apmSynthtraceEsClient }) => {\\n await\napmSynthtraceEsClient.index(\\n opbeans({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[opbeans\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\\nused\nin the example.\\n\\n### otelSynthtraceEsClient\\n```ts\\n test.before(\\n\nasync ({otelSynthtraceEsClient }) => {\\n await\notelSynthtraceEsClient.index(\\n sendotlp({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[sendotlp\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\\nwhich\nwill create the data.\\n\\n### infraSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ infraSynthtraceEsClient }) => {\\n await\ninfraSynthtraceEsClient.index(\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n })\\n\n);\\n }\\n\n);\\n```\\n[generateHosts\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\\nused\nto generate data.\\n\\n---------\\n\\nCo-authored-by: kibanamachine\n<42973632+kibanamachine@users.noreply.github.com>\",\"sha\":\"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f\",\"branchLabelMapping\":{\"^v9.1.0$\":\"main\",\"^v8.19.0$\":\"8.x\",\"^v(\\\\d+).(\\\\d+).\\\\d+$\":\"$1.$2\"}},\"sourcePullRequest\":{\"labels\":[\"release_note:skip\",\"v9.0.0\",\"apm:synthtrace\",\"Team:obs-ux-infra_services\",\"backport:version\",\"test:scout\",\"v9.1.0\",\"v8.19.0\"],\"title\":\"[kbn-scout]\nAdd Synthtrace as a\nfixture\",\"number\":210505,\"url\":\"https://github.com/elastic/kibana/pull/210505\",\"mergeCommit\":{\"message\":\"[kbn-scout]\nAdd Synthtrace as a fixture (#210505)\\n\\n## Summary\\n\\nCloses\n#210340\\n\\nThis PR adds synthtrace clients to scout as a test fixture,\nso you can\\nuse it in your test to generate data.\\n\\nThe clients added\nwere `apmSynthtraceEsClient`,\\n`infraSynthtraceEsClient` and\n`otelSynthtraceEsClient`.\\n\\n## How to use them in parallel tests\\n\\nAs\n`synthtrace` ingests data into our indices, and sequential runs\nwould\\nbe the perfect way to introduce flakiness in our tests, there is\na\\nbetter way to ingest data, using a hook, at the setup phase\nwith\\n`globalSetup`.\\nWe need to create a `global_setup.ts` file and\nlink it into our\\nplaywright config.\\nThen we can use something\nlike\\n```\\nasync function globalSetup(config: FullConfig) {\\n const data\n= {\\n apm: [\\n opbeans({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n infra: [\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n }),\\n\n],\\n otel: [\\n sendotlp({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n };\\n\\n return\ningestSynthtraceDataHook(config, data);\\n}\\n```\\nEach key (apm, infra,\notel) accepts an array of generators.\\n\\n## How to use them in\nsequential tests\\n> [!WARNING] \\n> This should not be the standard\nbehaviour, we should embrace\\nparallelism and use sequential testing\nwhen there is no other way.\\n\\n### apmSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ apmSynthtraceEsClient }) => {\\n await\napmSynthtraceEsClient.index(\\n opbeans({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[opbeans\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\\nused\nin the example.\\n\\n### otelSynthtraceEsClient\\n```ts\\n test.before(\\n\nasync ({otelSynthtraceEsClient }) => {\\n await\notelSynthtraceEsClient.index(\\n sendotlp({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[sendotlp\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\\nwhich\nwill create the data.\\n\\n### infraSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ infraSynthtraceEsClient }) => {\\n await\ninfraSynthtraceEsClient.index(\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n })\\n\n);\\n }\\n\n);\\n```\\n[generateHosts\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\\nused\nto generate data.\\n\\n---------\\n\\nCo-authored-by: kibanamachine\n<42973632+kibanamachine@users.noreply.github.com>\",\"sha\":\"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f\"}},\"sourceBranch\":\"main\",\"suggestedTargetBranches\":[\"9.0\",\"8.x\"],\"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/210505\",\"number\":210505,\"mergeCommit\":{\"message\":\"[kbn-scout]\nAdd Synthtrace as a fixture (#210505)\\n\\n## Summary\\n\\nCloses\n#210340\\n\\nThis PR adds synthtrace clients to scout as a test fixture,\nso you can\\nuse it in your test to generate data.\\n\\nThe clients added\nwere `apmSynthtraceEsClient`,\\n`infraSynthtraceEsClient` and\n`otelSynthtraceEsClient`.\\n\\n## How to use them in parallel tests\\n\\nAs\n`synthtrace` ingests data into our indices, and sequential runs\nwould\\nbe the perfect way to introduce flakiness in our tests, there is\na\\nbetter way to ingest data, using a hook, at the setup phase\nwith\\n`globalSetup`.\\nWe need to create a `global_setup.ts` file and\nlink it into our\\nplaywright config.\\nThen we can use something\nlike\\n```\\nasync function globalSetup(config: FullConfig) {\\n const data\n= {\\n apm: [\\n opbeans({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n infra: [\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n }),\\n\n],\\n otel: [\\n sendotlp({\\n from: new Date(start).getTime(),\\n to: new\nDate(end).getTime(),\\n }),\\n ],\\n };\\n\\n return\ningestSynthtraceDataHook(config, data);\\n}\\n```\\nEach key (apm, infra,\notel) accepts an array of generators.\\n\\n## How to use them in\nsequential tests\\n> [!WARNING] \\n> This should not be the standard\nbehaviour, we should embrace\\nparallelism and use sequential testing\nwhen there is no other way.\\n\\n### apmSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ apmSynthtraceEsClient }) => {\\n await\napmSynthtraceEsClient.index(\\n opbeans({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[opbeans\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\\nused\nin the example.\\n\\n### otelSynthtraceEsClient\\n```ts\\n test.before(\\n\nasync ({otelSynthtraceEsClient }) => {\\n await\notelSynthtraceEsClient.index(\\n sendotlp({\\n from: new\nDate(start).getTime(),\\n to: new Date(end).getTime(),\\n })\\n );\\n }\\n\n);\\n```\\n[sendotlp\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\\nwhich\nwill create the data.\\n\\n### infraSynthtraceEsClient\\n```ts\\n\ntest.before(\\n async ({ infraSynthtraceEsClient }) => {\\n await\ninfraSynthtraceEsClient.index(\\n generateHosts({\\n from: new\nDate(start).toISOString(),\\n to: new Date(end).toISOString(),\\n })\\n\n);\\n }\\n\n);\\n```\\n[generateHosts\\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\\nused\nto generate data.\\n\\n---------\\n\\nCo-authored-by: kibanamachine\n<42973632+kibanamachine@users.noreply.github.com>\",\"sha\":\"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f\"}},{\"branch\":\"8.x\",\"label\":\"v8.19.0\",\"branchLabelMappingKey\":\"^v8.19.0$\",\"isSourceBranch\":false,\"state\":\"NOT_CREATED\"}]}]\nBACKPORT-->\n\nCo-authored-by: Sergi Romeu <sergi.romeu@elastic.co>"}},{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/210505","number":210505,"mergeCommit":{"message":"[kbn-scout] Add Synthtrace as a fixture (#210505)\n\n## Summary\n\nCloses #210340\n\nThis PR adds synthtrace clients to scout as a test fixture, so you can\nuse it in your test to generate data.\n\nThe clients added were `apmSynthtraceEsClient`,\n`infraSynthtraceEsClient` and `otelSynthtraceEsClient`.\n\n## How to use them in parallel tests\n\nAs `synthtrace` ingests data into our indices, and sequential runs would\nbe the perfect way to introduce flakiness in our tests, there is a\nbetter way to ingest data, using a hook, at the setup phase with\n`globalSetup`.\nWe need to create a `global_setup.ts` file and link it into our\nplaywright config.\nThen we can use something like\n```\nasync function globalSetup(config: FullConfig) {\n const data = {\n apm: [\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n infra: [\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n }),\n ],\n otel: [\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n }),\n ],\n };\n\n return ingestSynthtraceDataHook(config, data);\n}\n```\nEach key (apm, infra, otel) accepts an array of generators.\n\n## How to use them in sequential tests\n> [!WARNING] \n> This should not be the standard behaviour, we should embrace\nparallelism and use sequential testing when there is no other way.\n\n### apmSynthtraceEsClient\n```ts\n test.before(\n async ({ apmSynthtraceEsClient }) => {\n await apmSynthtraceEsClient.index(\n opbeans({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[opbeans\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/opbeans.ts)\nused in the example.\n\n### otelSynthtraceEsClient\n```ts\n test.before(\n async ({otelSynthtraceEsClient }) => {\n await otelSynthtraceEsClient.index(\n sendotlp({\n from: new Date(start).getTime(),\n to: new Date(end).getTime(),\n })\n );\n }\n );\n```\n[sendotlp\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/apm/ftr_e2e/cypress/fixtures/synthtrace/sendotlp.ts)\nwhich will create the data.\n\n### infraSynthtraceEsClient\n```ts\n test.before(\n async ({ infraSynthtraceEsClient }) => {\n await infraSynthtraceEsClient.index(\n generateHosts({\n from: new Date(start).toISOString(),\n to: new Date(end).toISOString(),\n })\n );\n }\n );\n```\n[generateHosts\nfile](https://github.com/elastic/kibana/blob/main/x-pack/solutions/observability/plugins/inventory/e2e/cypress/e2e/alert_count/generate_data.ts#L82)\nused to generate data.\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"e21c5d0e9175ffd1bea0ad78ffe26cb973cc489f"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT--> --------- Co-authored-by: Sergi Romeu <sergi.romeu@elastic.co>
Summary
Closes #210340
This PR adds synthtrace clients to scout as a test fixture, so you can use it in your test to generate data.
The clients added were
apmSynthtraceEsClient
,infraSynthtraceEsClient
andotelSynthtraceEsClient
.How to use them in parallel tests
As
synthtrace
ingests data into our indices, and sequential runs would be the perfect way to introduce flakiness in our tests, there is a better way to ingest data, using a hook, at the setup phase withglobalSetup
.We need to create a
global_setup.ts
file and link it into our playwright config.Then we can use something like
Each key (apm, infra, otel) accepts an array of generators.
How to use them in sequential tests
Warning
This should not be the standard behaviour, we should embrace parallelism and use sequential testing when there is no other way.
apmSynthtraceEsClient
opbeans file used in the example.
otelSynthtraceEsClient
sendotlp file which will create the data.
infraSynthtraceEsClient
generateHosts file used to generate data.