@lokalise/playwright-reporters 1.3.0 → 1.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,7 @@ This is a collection of reporters to use with our Playwright test frameworks.
5
5
  ## Key Features
6
6
 
7
7
  - Retry reporter: Provides an easy way to retry failed tests on Jenkins or locally.
8
- - Analytics reporter: Uploads test results to ElasticSearch for further analysis.
8
+ - Analytics reporter: Uploads test results and browser usage to ElasticSearch for further analysis.
9
9
 
10
10
  ## Getting Started
11
11
 
@@ -28,10 +28,14 @@ export default defineConfig({
28
28
  flakyTestIndex: 'flaky_tests_0001',
29
29
  failedTestIndex: 'non_passing_tests_0001',
30
30
  testRunIndex: 'test_run_0001',
31
- elasticUrl: 'elasticUrl',
31
+ browserUsageIndex: 'browser_usage_0001',
32
+ elasticUrl: 'http://elasticUrl',
32
33
  elasticToken: 'elasticToken',
33
34
  currentBuildId: 'buildId',
34
- debug: false,
35
+ debug: true,
36
+ dryRun: false,
37
+ prenvId: 'develop',
38
+ product: 'product',
35
39
  })],
36
40
  ],
37
41
  ...
@@ -4,11 +4,11 @@ const test_1 = require("@playwright/test");
4
4
  // eslint-disable-next-line import/no-default-export
5
5
  exports.default = (0, test_1.defineConfig)({
6
6
  retries: 0,
7
- reporter: [["list"], ["html", { open: "never" }]],
7
+ reporter: [['list'], ['html', { open: 'never' }]],
8
8
  projects: [
9
9
  {
10
- name: "analytics",
11
- testMatch: "src/analytics/tests/transform.test.ts",
10
+ name: 'analytics',
11
+ testMatch: 'src/analytics/tests/*.test.ts',
12
12
  },
13
13
  ],
14
14
  });
@@ -1 +1 @@
1
- {"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../playwright.config.ts"],"names":[],"mappings":";;AAAA,2CAAgD;AAEhD,oDAAoD;AACpD,kBAAe,IAAA,mBAAY,EAAC;IAC3B,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,QAAQ,EAAE;QACT;YACC,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,uCAAuC;SAClD;KACD;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"playwright.config.js","sourceRoot":"","sources":["../playwright.config.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,oDAAoD;AACpD,kBAAe,IAAA,mBAAY,EAAC;IAC3B,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,QAAQ,EAAE;QACT;YACC,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,+BAA+B;SAC1C;KACD;CACD,CAAC,CAAA"}
@@ -1,8 +1,9 @@
1
- import { type formBuildData, type formFailedTestData, type formFlakyTestData } from "./transform";
1
+ import { type formBrowserUsageData, type formBuildData, type formFailedTestData, type formFlakyTestData } from './transform';
2
2
  export interface ElasticConfig {
3
3
  flakyTestIndex: string;
4
4
  failedTestIndex: string;
5
5
  testRunIndex: string;
6
+ browserUsageIndex?: string;
6
7
  elasticUrl: string;
7
8
  elasticToken: string;
8
9
  }
@@ -11,6 +12,7 @@ export declare class Elastic {
11
12
  private readonly flakyTestIndex;
12
13
  private readonly failedTestIndex;
13
14
  private readonly testRunIndex;
15
+ private readonly browserUsageIndex;
14
16
  private readonly elasticUrl;
15
17
  private readonly elasticToken;
16
18
  constructor(analyticsConfig: ElasticConfig);
@@ -18,6 +20,7 @@ export declare class Elastic {
18
20
  saveFlakyData(flake: ReturnType<typeof formFlakyTestData>): Promise<void>;
19
21
  saveFailedData(failure: ReturnType<typeof formFailedTestData>): Promise<void>;
20
22
  saveBuildData(build: ReturnType<typeof formBuildData>): Promise<void>;
23
+ saveBrowserUsageData(usageData: ReturnType<typeof formBrowserUsageData>): Promise<void>;
21
24
  getLastRunDataByTime(): Promise<string | null>;
22
25
  getLastRunDataByPrenvIdAndProject(prenvId: string, projects?: string[]): Promise<string | null>;
23
26
  }
@@ -8,6 +8,7 @@ class Elastic {
8
8
  this.flakyTestIndex = analyticsConfig.flakyTestIndex;
9
9
  this.failedTestIndex = analyticsConfig.failedTestIndex;
10
10
  this.testRunIndex = analyticsConfig.testRunIndex;
11
+ this.browserUsageIndex = analyticsConfig?.browserUsageIndex;
11
12
  this.elasticUrl = analyticsConfig.elasticUrl;
12
13
  this.elasticToken = analyticsConfig.elasticToken;
13
14
  }
@@ -46,6 +47,16 @@ class Elastic {
46
47
  (0, logger_1.logger)(error);
47
48
  }
48
49
  }
50
+ async saveBrowserUsageData(usageData) {
51
+ try {
52
+ await this.request.post(`/${this.browserUsageIndex}/_doc`, {
53
+ data: usageData,
54
+ });
55
+ }
56
+ catch (error) {
57
+ (0, logger_1.logger)(error);
58
+ }
59
+ }
49
60
  async getLastRunDataByTime() {
50
61
  try {
51
62
  const response = await this.request.post(`/${this.testRunIndex}/_search`, {
@@ -53,7 +64,7 @@ class Elastic {
53
64
  sort: [
54
65
  {
55
66
  startTime: {
56
- order: "desc",
67
+ order: 'desc',
57
68
  },
58
69
  },
59
70
  ],
@@ -77,7 +88,7 @@ class Elastic {
77
88
  must: [
78
89
  {
79
90
  term: {
80
- prenvId: prenvId,
91
+ prenvId,
81
92
  },
82
93
  },
83
94
  ...(projects ?? []).map((project) => ({
@@ -91,7 +102,7 @@ class Elastic {
91
102
  sort: [
92
103
  {
93
104
  startTime: {
94
- order: "desc",
105
+ order: 'desc',
95
106
  },
96
107
  },
97
108
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../../src/analytics/elastic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../../src/analytics/elastic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/analytics/logger.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,GAAG,QAAmB,EAAE,EAAE;IAChD,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC1B,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/analytics/logger.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,GAAG,QAAmB,EAAE,EAAE;IAChD,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;AACzB,CAAC,CAAA;AAHY,QAAA,MAAM,UAGlB"}
@@ -1,11 +1,11 @@
1
- import { type FullConfig, type FullResult, type Reporter, type Suite, type TestCase, type TestResult, type TestStatus, type TestStep } from "@playwright/test/reporter";
2
- import { type ElasticConfig } from "./elastic";
1
+ import { type FullConfig, type FullResult, type Reporter, type Suite, type TestCase, type TestResult, type TestStatus, type TestStep } from '@playwright/test/reporter';
2
+ import { type ElasticConfig } from './elastic';
3
3
  export default class AnalyticsReporter implements Reporter {
4
- readonly listOfNonPassingTests: TestAnalyticsData[];
5
- readonly listOfFlakyTests: TestAnalyticsData[];
6
- readonly browserCreationTimes: number[];
7
- readonly browserClosingTimes: number[];
8
- private elastic;
4
+ private readonly listOfNonPassingTests;
5
+ private readonly listOfFlakyTests;
6
+ private readonly browserCreationTimes;
7
+ private readonly browserUsage;
8
+ private readonly elastic;
9
9
  private runStartTime;
10
10
  private runEndTime;
11
11
  private numberOfTests;
@@ -13,8 +13,12 @@ export default class AnalyticsReporter implements Reporter {
13
13
  private projectNames;
14
14
  private testOwnerCount;
15
15
  private readonly options;
16
+ private readonly isMainPREnv;
17
+ private workerCount;
16
18
  constructor(options: ReporterOptions);
19
+ private shouldSaveBrowserData;
17
20
  onBegin(config: FullConfig, suite: Suite): Promise<void>;
21
+ onStepBegin(test: TestCase, result: TestResult, step: TestStep): void;
18
22
  onStepEnd(test: TestCase, result: TestResult, step: TestStep): void;
19
23
  onTestEnd(test: TestCase, result: TestResult): Promise<void>;
20
24
  private onEndDebug;
@@ -33,7 +37,8 @@ type ReporterOptions = {
33
37
  */
34
38
  dryRun?: boolean;
35
39
  currentBuildId: string;
36
- prenvId?: string;
40
+ prenvId: string;
41
+ product: 'autopilot' | 'expert';
37
42
  } & ElasticConfig;
38
43
  export interface TestAnalyticsData {
39
44
  timestamp: number;
@@ -46,4 +51,12 @@ export interface TestAnalyticsData {
46
51
  totalDuration: number;
47
52
  retry?: number;
48
53
  }
54
+ export type BrowserUsageData = {
55
+ createdBrowserCount: number;
56
+ data: Record<string, {
57
+ browserRequestTimestamp: number;
58
+ browserCreationTimestamp: number;
59
+ browserCloseTimestamp: number;
60
+ }>;
61
+ };
49
62
  export {};
@@ -12,20 +12,39 @@ class AnalyticsReporter {
12
12
  this.listOfNonPassingTests = [];
13
13
  this.listOfFlakyTests = [];
14
14
  this.browserCreationTimes = [];
15
- this.browserClosingTimes = [];
15
+ this.browserUsage = {
16
+ createdBrowserCount: 0,
17
+ data: {},
18
+ };
16
19
  this.projectNames = [];
17
20
  this.testOwnerCount = {};
18
21
  this.testRunId = faker_1.faker.string.uuid();
19
22
  this.runStartTime = Date.now();
20
23
  this.runEndTime = Date.now();
21
24
  this.numberOfTests = 0;
25
+ this.workerCount = 0;
26
+ this.isMainPREnv = (() => {
27
+ if (options.product === 'expert' && options.prenvId === 'develop') {
28
+ return true;
29
+ }
30
+ if (options.product === 'autopilot' && options.prenvId === 'main') {
31
+ return true;
32
+ }
33
+ return false;
34
+ })();
22
35
  this.elastic = new elastic_1.Elastic(options);
23
36
  }
37
+ shouldSaveBrowserData(test) {
38
+ const isAPISuite = test?.parent?.project()?.name?.includes('api');
39
+ const isIndexProvided = this.options.browserUsageIndex !== undefined;
40
+ return !isAPISuite && isIndexProvided;
41
+ }
24
42
  async onBegin(config, suite) {
25
43
  try {
26
44
  this.runStartTime = Date.now();
27
45
  this.numberOfTests = suite.allTests().length;
28
46
  this.projectNames = suite.suites.map((testSuite) => testSuite.title);
47
+ this.workerCount = config.workers;
29
48
  if (!this.options.dryRun) {
30
49
  await this.elastic.setNativeRequestContext();
31
50
  }
@@ -34,24 +53,49 @@ class AnalyticsReporter {
34
53
  console.error("Could not perform 'onBegin' analytics step", error);
35
54
  }
36
55
  }
56
+ onStepBegin(test, result, step) {
57
+ if (!this.shouldSaveBrowserData(test)) {
58
+ return;
59
+ }
60
+ try {
61
+ if (step.title.toLowerCase().includes('create browser')) {
62
+ const testId = `${test.id}-${result.retry ?? 0}`;
63
+ this.browserUsage.data[testId] = {
64
+ browserRequestTimestamp: step.startTime.getTime(),
65
+ browserCreationTimestamp: 0,
66
+ browserCloseTimestamp: 0,
67
+ };
68
+ this.browserUsage.createdBrowserCount++;
69
+ }
70
+ }
71
+ catch (error) {
72
+ console.error("Could not perform 'onStepBegin' analytics step", error);
73
+ }
74
+ }
37
75
  onStepEnd(test, result, step) {
38
76
  try {
39
- if (step.title.toLowerCase().includes("create browser")) {
77
+ if (step.title.toLowerCase().includes('create browser')) {
40
78
  this.browserCreationTimes.push(step.duration);
41
- }
42
- if (step.title.toLowerCase().includes("close browser")) {
43
- this.browserClosingTimes.push(step.duration);
79
+ if (!this.shouldSaveBrowserData(test)) {
80
+ return;
81
+ }
82
+ const testId = `${test.id}-${result.retry ?? 0}`;
83
+ this.browserUsage.data[testId] = {
84
+ ...this.browserUsage.data[testId],
85
+ browserCreationTimestamp: step.startTime.getTime() + step.duration,
86
+ };
44
87
  }
45
88
  }
46
89
  catch (error) {
47
90
  console.error("Could not perform 'onStepEnd' analytics step", error);
48
91
  }
49
92
  }
93
+ // eslint-disable-next-line max-statements
50
94
  async onTestEnd(test, result) {
51
95
  try {
52
96
  const { status, retry: currentRetryCount } = result;
53
97
  const { retries: maxRetriesCount } = test;
54
- if (["failed", "timedOut", "interrupted"].includes(status) &&
98
+ if (['failed', 'timedOut', 'interrupted'].includes(status) &&
55
99
  currentRetryCount === maxRetriesCount) {
56
100
  const failedTest = (0, transform_1.formFailedTestData)(test, result, this.testRunId, this.options.prenvId);
57
101
  this.listOfNonPassingTests.push(failedTest);
@@ -59,7 +103,7 @@ class AnalyticsReporter {
59
103
  await this.elastic.saveFailedData(failedTest);
60
104
  }
61
105
  }
62
- else if (["passed"].includes(status) && currentRetryCount) {
106
+ else if (['passed'].includes(status) && currentRetryCount) {
63
107
  const flakyTest = (0, transform_1.formFlakyTestData)(test, result, this.testRunId, this.options.prenvId);
64
108
  this.listOfFlakyTests.push(flakyTest);
65
109
  if (!this.options.dryRun) {
@@ -70,20 +114,38 @@ class AnalyticsReporter {
70
114
  const ownerTeamNames = (0, transform_1.getTeamNames)(test);
71
115
  this.testOwnerCount = (0, transform_1.addTeamCount)(this.testOwnerCount, ownerTeamNames);
72
116
  }
117
+ if (!this.shouldSaveBrowserData(test)) {
118
+ return;
119
+ }
120
+ const testId = `${test.id}-${result.retry ?? 0}`;
121
+ this.browserUsage.data[testId] = {
122
+ ...this.browserUsage.data[testId],
123
+ browserCloseTimestamp: result.startTime.getTime() + result.duration,
124
+ };
125
+ if (!this.browserUsage.data[testId].browserRequestTimestamp &&
126
+ this.browserUsage.data[testId].browserCloseTimestamp) {
127
+ this.browserUsage.data[testId].browserRequestTimestamp = result.startTime.getTime();
128
+ }
129
+ if (!this.browserUsage.data[testId].browserCreationTimestamp &&
130
+ this.browserUsage.data[testId].browserCloseTimestamp) {
131
+ this.browserUsage.data[testId].browserCreationTimestamp = result.startTime.getTime();
132
+ }
73
133
  }
74
134
  catch (error) {
75
135
  console.error("Could not perform 'onTestEnd' analytics step", error);
76
136
  }
77
137
  }
78
- onEndDebug(buildData) {
138
+ onEndDebug(buildData, browserUsageData) {
79
139
  (0, transform_1.calculateRuntime)(this.runStartTime);
80
140
  (0, transform_1.calculateRetriedTests)(this.listOfFlakyTests);
81
- console.log("NON PASSING TESTS");
141
+ console.log('NON PASSING TESTS');
82
142
  console.table(this.listOfNonPassingTests);
83
- console.log("FLAKY TESTS");
143
+ console.log('FLAKY TESTS');
84
144
  console.table(this.listOfFlakyTests);
85
- console.log("RUN DATA");
145
+ console.log('RUN DATA');
86
146
  console.table([buildData]);
147
+ console.log('BROWSER USAGE DATA');
148
+ console.log(browserUsageData);
87
149
  }
88
150
  async onEnd(result) {
89
151
  try {
@@ -105,7 +167,7 @@ class AnalyticsReporter {
105
167
  return await this.elastic.getLastRunDataByTime();
106
168
  };
107
169
  const buildIDWithPrefix = this.options?.dryRun === true
108
- ? "dryRun"
170
+ ? 'dryRun'
109
171
  : transform_1.getBuildIdWithPrefix.bind(this)(await getLastBuildData(), this.options.currentBuildId);
110
172
  const buildData = (0, transform_1.formBuildData)({
111
173
  result,
@@ -115,19 +177,29 @@ class AnalyticsReporter {
115
177
  numberOfTests: this.numberOfTests,
116
178
  failedTests: this.listOfNonPassingTests,
117
179
  flakyTests: this.listOfFlakyTests,
118
- browserCreation: this.browserCreationTimes.reduce((acc, current) => acc + current, 0),
119
- browserClose: this.browserClosingTimes.reduce((acc, current) => acc + current, 0),
180
+ browserCreationTimes: this.browserCreationTimes,
120
181
  project: projectData,
121
182
  teamStats: this.testOwnerCount,
122
183
  buildId: buildIDWithPrefix,
123
184
  prenvId: this.options.prenvId,
124
185
  });
186
+ const browserUsageData = (0, transform_1.formBrowserUsageData)({
187
+ startTime: this.runStartTime,
188
+ testRunId: this.testRunId,
189
+ isMainPREnv: this.isMainPREnv,
190
+ browserUsage: this.browserUsage,
191
+ workerCount: this.workerCount,
192
+ product: this.options.product,
193
+ });
125
194
  if (!this.options.dryRun) {
126
195
  await this.elastic.saveBuildData(buildData);
196
+ if (browserUsageData.browserUsageAfterCreation > 0 &&
197
+ browserUsageData.browserUsageFromRequest > 0) {
198
+ await this.elastic.saveBrowserUsageData(browserUsageData);
199
+ }
127
200
  }
128
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
129
201
  if (this.options.debug || this.options.dryRun) {
130
- this.onEndDebug(buildData);
202
+ this.onEndDebug(buildData, browserUsageData);
131
203
  }
132
204
  }
133
205
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/analytics/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/analytics/reporter.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,2CAAuC;AAYvC,uCAAuD;AACvD,2CAWoB;AAEpB,oDAAoD;AACpD,MAAqB,iBAAiB;IAgBrC,YAAY,OAAwB;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAA;QAC/B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA;QAE1B,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG;YACnB,mBAAmB,EAAE,CAAC;YACtB,IAAI,EAAE,EAAE;SACR,CAAA;QAED,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QAExB,IAAI,CAAC,SAAS,GAAG,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QAEpB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE;YACxB,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBACnE,OAAO,IAAI,CAAA;YACZ,CAAC;YAED,OAAO,KAAK,CAAA;QACb,CAAC,CAAC,EAAE,CAAA;QAEJ,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAEO,qBAAqB,CAAC,IAAc;QAC3C,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAA;QAEpE,OAAO,CAAC,UAAU,IAAI,eAAe,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAkB,EAAE,KAAY;QAC7C,IAAI,CAAC;YACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC9B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAA;YAC5C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YACpE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAA;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAA;YAC7C,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAA;QACnE,CAAC;IACF,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,MAAkB,EAAE,IAAc;QAC7D,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,OAAM;QACP,CAAC;QAED,IAAI,CAAC;YACJ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzD,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;gBAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;oBAChC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;oBACjD,wBAAwB,EAAE,CAAC;oBAC3B,qBAAqB,EAAE,CAAC;iBACxB,CAAA;gBACD,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAA;YACxC,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAA;QACvE,CAAC;IACF,CAAC;IAED,SAAS,CAAC,IAAc,EAAE,MAAkB,EAAE,IAAc;QAC3D,IAAI,CAAC;YACJ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAE7C,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,OAAM;gBACP,CAAC;gBAED,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;gBAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;oBAChC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;oBACjC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,QAAQ;iBAClE,CAAA;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;IACF,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,SAAS,CAAC,IAAc,EAAE,MAAkB;QACjD,IAAI,CAAC;YACJ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAA;YACnD,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;YAEzC,IACC,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtD,iBAAiB,KAAK,eAAe,EACpC,CAAC;gBACF,MAAM,UAAU,GAAG,IAAA,8BAAkB,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACzF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAE3C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;gBAC9C,CAAC;YACF,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBACvF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAErC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBAC5C,CAAC;YACF,CAAC;iBAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,MAAM,cAAc,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,CAAA;gBAC9C,IAAI,CAAC,cAAc,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;YACxE,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAM;YACP,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;YAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;gBAChC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjC,qBAAqB,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ;aACnE,CAAA;YAED,IACC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,uBAAuB;gBACvD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,EACnD,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,uBAAuB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YACpF,CAAC;YAED,IACC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,wBAAwB;gBACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,qBAAqB,EACnD,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;YACrF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;QACrE,CAAC;IACF,CAAC;IAEO,UAAU,CACjB,SAA2C,EAC3C,gBAAyD;QAEzD,IAAA,4BAAgB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACnC,IAAA,iCAAqB,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAE5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;QAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAEzC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAEpC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;QAE1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAkB;QAC7B,IAAI,CAAC;YACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAE5B,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;gBACzB,MAAM,WAAW,GAA4B,EAAE,CAAA;gBAE/C,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC7C,WAAW,CAAC,WAAW,CAAC,GAAG,IAAI,CAAA;gBAChC,CAAC;gBAED,OAAO,WAAW,CAAA;YACnB,CAAC,CAAC,EAAE,CAAA;YAEJ,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;gBACnC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;yBACpD,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;yBAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;oBAErB,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,EACpB,kBAAkB,CAClB,CAAA;gBACF,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAA;YACjD,CAAC,CAAA;YAED,MAAM,iBAAiB,GACtB,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;gBAC5B,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,gCAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,gBAAgB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;YAE1F,MAAM,SAAS,GAAG,IAAA,yBAAa,EAAC;gBAC/B,MAAM;gBACN,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,WAAW,EAAE,IAAI,CAAC,qBAAqB;gBACvC,UAAU,EAAE,IAAI,CAAC,gBAAgB;gBACjC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC/C,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,IAAI,CAAC,cAAc;gBAC9B,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAA;YAEF,MAAM,gBAAgB,GAAG,IAAA,gCAAoB,EAAC;gBAC7C,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBAE3C,IACC,gBAAgB,CAAC,yBAAyB,GAAG,CAAC;oBAC9C,gBAAgB,CAAC,uBAAuB,GAAG,CAAC,EAC3C,CAAC;oBACF,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAA;gBAC1D,CAAC;YACF,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;YAC7C,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC;IACF,CAAC;CACD;AAzQD,oCAyQC;AAEM,MAAM,6BAA6B,GAAG,CAC5C,OAA2D,EAC1D,EAAE,CAAC,OAAO,CAAA;AAFC,QAAA,6BAA6B,iCAE9B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("@playwright/test");
4
+ const transform_1 = require("../transform");
5
+ test_1.test.describe('Analytics: browser usage transform', () => {
6
+ (0, test_1.test)('should form browser usage', () => {
7
+ const startTime = Date.now();
8
+ const formedBrowserUsageData = (0, transform_1.formBrowserUsageData)({
9
+ startTime,
10
+ testRunId: 'testRunId',
11
+ isMainPREnv: true,
12
+ browserUsage: {
13
+ createdBrowserCount: 2,
14
+ data: {
15
+ testId1: {
16
+ browserRequestTimestamp: 123,
17
+ browserCreationTimestamp: 234,
18
+ browserCloseTimestamp: 345,
19
+ },
20
+ testId2: {
21
+ browserRequestTimestamp: 234,
22
+ browserCreationTimestamp: 345,
23
+ browserCloseTimestamp: 456,
24
+ },
25
+ },
26
+ },
27
+ workerCount: 2,
28
+ product: 'expert',
29
+ });
30
+ (0, test_1.expect)(formedBrowserUsageData).toMatchObject({
31
+ timestamp: startTime,
32
+ testRunId: 'testRunId',
33
+ isMain: true,
34
+ workerCount: 2,
35
+ product: 'expert',
36
+ browserUsageFromRequest: 444,
37
+ browserUsageAfterCreation: 222,
38
+ createdBrowserCount: 2,
39
+ });
40
+ });
41
+ });
42
+ //# sourceMappingURL=browserUsage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserUsage.test.js","sourceRoot":"","sources":["../../../../src/analytics/tests/browserUsage.test.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,4CAAmD;AAEnD,WAAI,CAAC,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IACxD,IAAA,WAAI,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,MAAM,sBAAsB,GAAG,IAAA,gCAAoB,EAAC;YACnD,SAAS;YACT,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE;gBACb,mBAAmB,EAAE,CAAC;gBACtB,IAAI,EAAE;oBACL,OAAO,EAAE;wBACR,uBAAuB,EAAE,GAAG;wBAC5B,wBAAwB,EAAE,GAAG;wBAC7B,qBAAqB,EAAE,GAAG;qBAC1B;oBACD,OAAO,EAAE;wBACR,uBAAuB,EAAE,GAAG;wBAC5B,wBAAwB,EAAE,GAAG;wBAC7B,qBAAqB,EAAE,GAAG;qBAC1B;iBACD;aACD;YACD,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ;SACjB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,sBAAsB,CAAC,CAAC,aAAa,CAAC;YAC5C,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,QAAQ;YACjB,uBAAuB,EAAE,GAAG;YAC5B,yBAAyB,EAAE,GAAG;YAC9B,mBAAmB,EAAE,CAAC;SACqB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}