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

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,9 @@ export interface TestAnalyticsData {
46
51
  totalDuration: number;
47
52
  retry?: number;
48
53
  }
54
+ export type BrowserUsageData = Record<string, {
55
+ browserRequestTimestamp: number;
56
+ browserCreationTimestamp: number;
57
+ browserCloseTimestamp: number;
58
+ }>;
49
59
  export {};
@@ -12,20 +12,36 @@ class AnalyticsReporter {
12
12
  this.listOfNonPassingTests = [];
13
13
  this.listOfFlakyTests = [];
14
14
  this.browserCreationTimes = [];
15
- this.browserClosingTimes = [];
15
+ this.browserUsage = {};
16
16
  this.projectNames = [];
17
17
  this.testOwnerCount = {};
18
18
  this.testRunId = faker_1.faker.string.uuid();
19
19
  this.runStartTime = Date.now();
20
20
  this.runEndTime = Date.now();
21
21
  this.numberOfTests = 0;
22
+ this.workerCount = 0;
23
+ this.isMainPREnv = (() => {
24
+ if (options.product === 'expert' && options.prenvId === 'develop') {
25
+ return true;
26
+ }
27
+ if (options.product === 'autopilot' && options.prenvId === 'main') {
28
+ return true;
29
+ }
30
+ return false;
31
+ })();
22
32
  this.elastic = new elastic_1.Elastic(options);
23
33
  }
34
+ shouldSaveBrowserData(test) {
35
+ const isAPISuite = test?.parent?.project()?.name?.includes('api');
36
+ const isIndexProvided = this.options.browserUsageIndex !== undefined;
37
+ return !isAPISuite && isIndexProvided;
38
+ }
24
39
  async onBegin(config, suite) {
25
40
  try {
26
41
  this.runStartTime = Date.now();
27
42
  this.numberOfTests = suite.allTests().length;
28
43
  this.projectNames = suite.suites.map((testSuite) => testSuite.title);
44
+ this.workerCount = config.workers;
29
45
  if (!this.options.dryRun) {
30
46
  await this.elastic.setNativeRequestContext();
31
47
  }
@@ -34,24 +50,48 @@ class AnalyticsReporter {
34
50
  console.error("Could not perform 'onBegin' analytics step", error);
35
51
  }
36
52
  }
53
+ onStepBegin(test, result, step) {
54
+ if (!this.shouldSaveBrowserData(test)) {
55
+ return;
56
+ }
57
+ try {
58
+ if (step.title.toLowerCase().includes('create browser')) {
59
+ const testId = `${test.id}-${result.retry ?? 0}`;
60
+ this.browserUsage[testId] = {
61
+ browserRequestTimestamp: step.startTime.getTime(),
62
+ browserCreationTimestamp: 0,
63
+ browserCloseTimestamp: 0,
64
+ };
65
+ }
66
+ }
67
+ catch (error) {
68
+ console.error("Could not perform 'onStepBegin' analytics step", error);
69
+ }
70
+ }
37
71
  onStepEnd(test, result, step) {
38
72
  try {
39
- if (step.title.toLowerCase().includes("create browser")) {
73
+ if (step.title.toLowerCase().includes('create browser')) {
40
74
  this.browserCreationTimes.push(step.duration);
41
- }
42
- if (step.title.toLowerCase().includes("close browser")) {
43
- this.browserClosingTimes.push(step.duration);
75
+ if (!this.shouldSaveBrowserData(test)) {
76
+ return;
77
+ }
78
+ const testId = `${test.id}-${result.retry ?? 0}`;
79
+ this.browserUsage[testId] = {
80
+ ...this.browserUsage[testId],
81
+ browserCreationTimestamp: step.startTime.getTime() + step.duration,
82
+ };
44
83
  }
45
84
  }
46
85
  catch (error) {
47
86
  console.error("Could not perform 'onStepEnd' analytics step", error);
48
87
  }
49
88
  }
89
+ // eslint-disable-next-line max-statements
50
90
  async onTestEnd(test, result) {
51
91
  try {
52
92
  const { status, retry: currentRetryCount } = result;
53
93
  const { retries: maxRetriesCount } = test;
54
- if (["failed", "timedOut", "interrupted"].includes(status) &&
94
+ if (['failed', 'timedOut', 'interrupted'].includes(status) &&
55
95
  currentRetryCount === maxRetriesCount) {
56
96
  const failedTest = (0, transform_1.formFailedTestData)(test, result, this.testRunId, this.options.prenvId);
57
97
  this.listOfNonPassingTests.push(failedTest);
@@ -59,7 +99,7 @@ class AnalyticsReporter {
59
99
  await this.elastic.saveFailedData(failedTest);
60
100
  }
61
101
  }
62
- else if (["passed"].includes(status) && currentRetryCount) {
102
+ else if (['passed'].includes(status) && currentRetryCount) {
63
103
  const flakyTest = (0, transform_1.formFlakyTestData)(test, result, this.testRunId, this.options.prenvId);
64
104
  this.listOfFlakyTests.push(flakyTest);
65
105
  if (!this.options.dryRun) {
@@ -70,20 +110,30 @@ class AnalyticsReporter {
70
110
  const ownerTeamNames = (0, transform_1.getTeamNames)(test);
71
111
  this.testOwnerCount = (0, transform_1.addTeamCount)(this.testOwnerCount, ownerTeamNames);
72
112
  }
113
+ if (!this.shouldSaveBrowserData(test)) {
114
+ return;
115
+ }
116
+ const testId = `${test.id}-${result.retry ?? 0}`;
117
+ this.browserUsage[testId] = {
118
+ ...this.browserUsage[testId],
119
+ browserCloseTimestamp: result.startTime.getTime() + result.duration,
120
+ };
73
121
  }
74
122
  catch (error) {
75
123
  console.error("Could not perform 'onTestEnd' analytics step", error);
76
124
  }
77
125
  }
78
- onEndDebug(buildData) {
126
+ onEndDebug(buildData, browserUsageData) {
79
127
  (0, transform_1.calculateRuntime)(this.runStartTime);
80
128
  (0, transform_1.calculateRetriedTests)(this.listOfFlakyTests);
81
- console.log("NON PASSING TESTS");
129
+ console.log('NON PASSING TESTS');
82
130
  console.table(this.listOfNonPassingTests);
83
- console.log("FLAKY TESTS");
131
+ console.log('FLAKY TESTS');
84
132
  console.table(this.listOfFlakyTests);
85
- console.log("RUN DATA");
133
+ console.log('RUN DATA');
86
134
  console.table([buildData]);
135
+ console.log('BROWSER USAGE DATA');
136
+ console.log(browserUsageData);
87
137
  }
88
138
  async onEnd(result) {
89
139
  try {
@@ -105,7 +155,7 @@ class AnalyticsReporter {
105
155
  return await this.elastic.getLastRunDataByTime();
106
156
  };
107
157
  const buildIDWithPrefix = this.options?.dryRun === true
108
- ? "dryRun"
158
+ ? 'dryRun'
109
159
  : transform_1.getBuildIdWithPrefix.bind(this)(await getLastBuildData(), this.options.currentBuildId);
110
160
  const buildData = (0, transform_1.formBuildData)({
111
161
  result,
@@ -115,19 +165,29 @@ class AnalyticsReporter {
115
165
  numberOfTests: this.numberOfTests,
116
166
  failedTests: this.listOfNonPassingTests,
117
167
  flakyTests: this.listOfFlakyTests,
118
- browserCreation: this.browserCreationTimes.reduce((acc, current) => acc + current, 0),
119
- browserClose: this.browserClosingTimes.reduce((acc, current) => acc + current, 0),
168
+ browserCreationTimes: this.browserCreationTimes,
120
169
  project: projectData,
121
170
  teamStats: this.testOwnerCount,
122
171
  buildId: buildIDWithPrefix,
123
172
  prenvId: this.options.prenvId,
124
173
  });
174
+ const browserUsageData = (0, transform_1.formBrowserUsageData)({
175
+ startTime: this.runStartTime,
176
+ testRunId: this.testRunId,
177
+ isMainPREnv: this.isMainPREnv,
178
+ browserUsage: this.browserUsage,
179
+ workerCount: this.workerCount,
180
+ product: this.options.product,
181
+ });
125
182
  if (!this.options.dryRun) {
126
183
  await this.elastic.saveBuildData(buildData);
184
+ if (browserUsageData.browserUsageAfterCreation > 0 &&
185
+ browserUsageData.browserUsageFromRequest > 0) {
186
+ await this.elastic.saveBrowserUsageData(browserUsageData);
187
+ }
127
188
  }
128
- // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
129
189
  if (this.options.debug || this.options.dryRun) {
130
- this.onEndDebug(buildData);
190
+ this.onEndDebug(buildData, browserUsageData);
131
191
  }
132
192
  }
133
193
  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":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
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
+ testId1: {
14
+ browserRequestTimestamp: 123,
15
+ browserCreationTimestamp: 234,
16
+ browserCloseTimestamp: 345,
17
+ },
18
+ testId2: {
19
+ browserRequestTimestamp: 234,
20
+ browserCreationTimestamp: 345,
21
+ browserCloseTimestamp: 456,
22
+ },
23
+ },
24
+ workerCount: 2,
25
+ product: 'expert',
26
+ });
27
+ (0, test_1.expect)(formedBrowserUsageData).toMatchObject({
28
+ timestamp: startTime,
29
+ testRunId: 'testRunId',
30
+ isMain: true,
31
+ workerCount: 2,
32
+ product: 'expert',
33
+ browserUsageFromRequest: 444,
34
+ browserUsageAfterCreation: 222,
35
+ createdBrowserCount: 2,
36
+ });
37
+ });
38
+ });
39
+ //# 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,OAAO,EAAE;oBACR,uBAAuB,EAAE,GAAG;oBAC5B,wBAAwB,EAAE,GAAG;oBAC7B,qBAAqB,EAAE,GAAG;iBAC1B;gBACD,OAAO,EAAE;oBACR,uBAAuB,EAAE,GAAG;oBAC5B,wBAAwB,EAAE,GAAG;oBAC7B,qBAAqB,EAAE,GAAG;iBAC1B;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"}