sealights-cypress-plugin 2.0.17
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 +104 -0
- package/package.json +37 -0
- package/support.js +1 -0
- package/tsOutputs/config.d.ts +1 -0
- package/tsOutputs/config.js +50 -0
- package/tsOutputs/config.js.map +1 -0
- package/tsOutputs/const.d.ts +22 -0
- package/tsOutputs/const.js +27 -0
- package/tsOutputs/const.js.map +1 -0
- package/tsOutputs/index.d.ts +1 -0
- package/tsOutputs/index.js +6 -0
- package/tsOutputs/index.js.map +1 -0
- package/tsOutputs/sealights-service.d.ts +27 -0
- package/tsOutputs/sealights-service.js +158 -0
- package/tsOutputs/sealights-service.js.map +1 -0
- package/tsOutputs/support.d.ts +1 -0
- package/tsOutputs/support.js +78 -0
- package/tsOutputs/support.js.map +1 -0
- package/tsOutputs/utils.d.ts +3 -0
- package/tsOutputs/utils.js +27 -0
- package/tsOutputs/utils.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# sealights-cypress-plugin
|
|
2
|
+
|
|
3
|
+
**sealights-cypress-plugin** is a custom plugin for the Cypress testing framework that enhances your testing capabilities by providing additional support for various tasks and configurations. <br>
|
|
4
|
+
This plugin adds support for Sealights, reporting coverage and test skipping as well.
|
|
5
|
+
|
|
6
|
+
## Supported Node / Cypress versions
|
|
7
|
+
|
|
8
|
+
- Node >= 12
|
|
9
|
+
- Cypress >= 9
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- **Support File:** The plugin introduces a support file, it is automatically loaded before each test, providing a centralized location to manage the Sealights information and execute the required hooks
|
|
14
|
+
|
|
15
|
+
- **Config File:** The config file empowers the Cypress tests run by adding the required tasks and communicates with Sealights
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
To use **sealights-cypress-plugin** in your Cypress project, follow these steps:
|
|
20
|
+
|
|
21
|
+
1. Install and Setup Cypress if you haven't already:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install cypress --save-dev
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. Install the plugin from GitHub/npm
|
|
28
|
+
```bash
|
|
29
|
+
npm install sealights-cypress-plugin
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
# Cypress v10+
|
|
33
|
+
|
|
34
|
+
In your `cypress.config.js` register the plugin:
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
const { defineConfig } = require('cypress');
|
|
38
|
+
const { registerSealightsTasks } = require('sealights-cypress-plugin');
|
|
39
|
+
|
|
40
|
+
module.exports = defineConfig({
|
|
41
|
+
e2e: {
|
|
42
|
+
experimentalInteractiveRunEvents: true,
|
|
43
|
+
testIsolation: false,
|
|
44
|
+
setupNodeEvents(on, config) {
|
|
45
|
+
registerSealightsTasks(on, config);
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Add to your `cypress/support/e2e.js`:
|
|
52
|
+
|
|
53
|
+
```javascript
|
|
54
|
+
// This is your existing support/e2e.js file content
|
|
55
|
+
// ...
|
|
56
|
+
|
|
57
|
+
// Import sealights-cypress-plugin's support file
|
|
58
|
+
import 'sealights-cypress-plugin/support';
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
# Cypress v9
|
|
62
|
+
|
|
63
|
+
Add to your cypress/plugins/index.js file
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
const { registerSealightsTasks } = require('sealights-cypress-plugin');
|
|
67
|
+
|
|
68
|
+
module.exports = (on, config) => {
|
|
69
|
+
registerSealightsTasks(on, config);
|
|
70
|
+
// IMPORTANT: return the config object
|
|
71
|
+
// because the plugin might have changed it
|
|
72
|
+
return config;
|
|
73
|
+
};
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Add to your `cypress/support/index.js` file
|
|
77
|
+
|
|
78
|
+
```javascript
|
|
79
|
+
import 'sealights-cypress-plugin/support';
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Configuration
|
|
83
|
+
|
|
84
|
+
In order for the Sealights integration to work, three parameters have to be exported to the Cypress config.<br>
|
|
85
|
+
This can be done using environment variables and exposing them to Cypress. The three environment variables are:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
SL_BUILD_SESSION_ID // this or labId
|
|
89
|
+
SL_LAB_ID // this or buildSessionId
|
|
90
|
+
SL_TOKEN
|
|
91
|
+
SL_TEST_STAGE
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
For them to be available to Cypress, they have to be prefixed with `CYPRESS_`, for example:
|
|
95
|
+
|
|
96
|
+
```shell
|
|
97
|
+
export CYPRESS_SL_TOKEN={token}
|
|
98
|
+
export CYPRESS_SL_BUILD_SESSION_ID={buildSessionId}
|
|
99
|
+
export CYPRESS_SL_LAB_ID={labId}
|
|
100
|
+
export CYPRESS_SL_TEST_STAGE={your-test-stage}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
More about defining the environment variables in Cypress at the following link:
|
|
104
|
+
https://docs.cypress.io/guides/guides/environment-variables
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sealights-cypress-plugin",
|
|
3
|
+
"version": "2.0.17",
|
|
4
|
+
"description": "Support and config files for Cypress to support Sealights integration.",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc",
|
|
7
|
+
"lint": "eslint src/**/*.ts",
|
|
8
|
+
"format": "eslint src/**/*.ts --fix"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [],
|
|
11
|
+
"author": "Kristijan Stefanoski<kristijan.stefanoski@sealights.io>",
|
|
12
|
+
"license": "ISC",
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"cypress": "^12.17.4",
|
|
15
|
+
"husky": "4.3.8",
|
|
16
|
+
"prettier": "^3.0.2",
|
|
17
|
+
"typescript": "^5.1.6"
|
|
18
|
+
},
|
|
19
|
+
"husky": {
|
|
20
|
+
"hooks": {
|
|
21
|
+
"pre-commit": "npm run lint && prettier --write . && git add -A ."
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"axios": "0.21.4",
|
|
26
|
+
"jwt-decode": "^3.1.2"
|
|
27
|
+
},
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/Sealights/SL.OnPremis.Plugins.JavaScript/issues"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"tsOutputs/*",
|
|
33
|
+
"support.js"
|
|
34
|
+
],
|
|
35
|
+
"main": "tsOutputs/index.js",
|
|
36
|
+
"gitHead": "013fffdc5746b52d5e4d56e54f4c59d894919b4a"
|
|
37
|
+
}
|
package/support.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './tsOutputs/support';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const registerSealightsTasks: (on: any, config: any) => any;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.registerSealightsTasks = void 0;
|
|
13
|
+
const const_1 = require("./const");
|
|
14
|
+
const sealights_service_1 = require("./sealights-service");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
16
|
+
const registerSealightsTasks = (on, config) => {
|
|
17
|
+
const slConfig = {
|
|
18
|
+
buildsessionid: config.env[const_1.SL_CYPRESS_ENVIRONMENT.BUILD_SESSION_ID],
|
|
19
|
+
token: config.env[const_1.SL_CYPRESS_ENVIRONMENT.TOKEN],
|
|
20
|
+
teststage: config.env[const_1.SL_CYPRESS_ENVIRONMENT.TEST_STAGE],
|
|
21
|
+
labid: config.env[const_1.SL_CYPRESS_ENVIRONMENT.LAB_ID],
|
|
22
|
+
};
|
|
23
|
+
on('before:run', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
sealights_service_1.SealightsTestSessionService.setConfig(slConfig.token, slConfig.teststage, slConfig.buildsessionid, slConfig.labid);
|
|
25
|
+
yield sealights_service_1.SealightsTestSessionService.createTestSession();
|
|
26
|
+
}));
|
|
27
|
+
on('after:run', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
+
yield sealights_service_1.SealightsTestSessionService.endTestSession();
|
|
29
|
+
}));
|
|
30
|
+
on('task', {
|
|
31
|
+
[const_1.REPORT_TEST_END_TASK]({ suiteName, testName, duration, state }) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const name = (0, utils_1.constructTestName)(suiteName, testName);
|
|
34
|
+
const start = Date.now() - duration;
|
|
35
|
+
const end = Date.now();
|
|
36
|
+
yield sealights_service_1.SealightsTestSessionService.sendTestEvent(name, start, end, state);
|
|
37
|
+
return null;
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
[const_1.EXCLUDED_TESTS_TASK]() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
return yield sealights_service_1.SealightsTestSessionService.getTestRecommendations();
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
config.env[const_1.SL_TASKS_REGISTERED] = true;
|
|
47
|
+
return config;
|
|
48
|
+
};
|
|
49
|
+
exports.registerSealightsTasks = registerSealightsTasks;
|
|
50
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAiH;AACjH,2DAAkE;AAClE,mCAA4C;AAErC,MAAM,sBAAsB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;IACnD,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,gBAAgB,CAAC;QACnE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,KAAK,CAAC;QAC/C,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,UAAU,CAAC;QACxD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,8BAAsB,CAAC,MAAM,CAAC;KACjD,CAAC;IAGF,EAAE,CAAC,YAAY,EAAE,GAAS,EAAE;QAC1B,+CAA2B,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnH,MAAM,+CAA2B,CAAC,iBAAiB,EAAE,CAAC;IACxD,CAAC,CAAA,CAAC,CAAC;IAGH,EAAE,CAAC,WAAW,EAAE,GAAS,EAAE;QACzB,MAAM,+CAA2B,CAAC,cAAc,EAAE,CAAC;IACrD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,MAAM,EAAE;QAEH,CAAC,4BAAoB,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE;;gBACnE,MAAM,IAAI,GAAG,IAAA,yBAAiB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,MAAM,+CAA2B,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAEzE,OAAO,IAAI,CAAC;YACd,CAAC;SAAA;QACK,CAAC,2BAAmB,CAAC;;gBACzB,OAAO,MAAM,+CAA2B,CAAC,sBAAsB,EAAE,CAAC;YACpE,CAAC;SAAA;KACF,CAAC,CAAC;IAGH,MAAM,CAAC,GAAG,CAAC,2BAAmB,CAAC,GAAG,IAAI,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtCW,QAAA,sBAAsB,0BAsCjC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const SL_CYPRESS_ENVIRONMENT: {
|
|
2
|
+
BUILD_SESSION_ID: string;
|
|
3
|
+
TOKEN: string;
|
|
4
|
+
TEST_STAGE: string;
|
|
5
|
+
LAB_ID: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const SL_TASKS_REGISTERED = "sealightsTasksRegistered";
|
|
8
|
+
export declare const EXCLUDED_TESTS_TASK = "getExcludedTests";
|
|
9
|
+
export declare const X_SL_SERVER = "x-sl-server";
|
|
10
|
+
export declare const REPORT_TEST_END_TASK = "reportTestEnd";
|
|
11
|
+
export declare const SL_COLORING_EVENTS: {
|
|
12
|
+
SET_CONTEXT: string;
|
|
13
|
+
DELETE_CONTEXT: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const SL_COLORING_HEADERS: {
|
|
16
|
+
TEST_NAME: string;
|
|
17
|
+
TEST_SESSION_ID: string;
|
|
18
|
+
};
|
|
19
|
+
export declare enum TEST_STATUS {
|
|
20
|
+
SKIPPED = "skipped",
|
|
21
|
+
PENDING = "pending"
|
|
22
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TEST_STATUS = exports.SL_COLORING_HEADERS = exports.SL_COLORING_EVENTS = exports.REPORT_TEST_END_TASK = exports.X_SL_SERVER = exports.EXCLUDED_TESTS_TASK = exports.SL_TASKS_REGISTERED = exports.SL_CYPRESS_ENVIRONMENT = void 0;
|
|
4
|
+
exports.SL_CYPRESS_ENVIRONMENT = {
|
|
5
|
+
BUILD_SESSION_ID: 'SL_BUILD_SESSION_ID',
|
|
6
|
+
TOKEN: 'SL_TOKEN',
|
|
7
|
+
TEST_STAGE: 'SL_TEST_STAGE',
|
|
8
|
+
LAB_ID: 'SL_LAB_ID',
|
|
9
|
+
};
|
|
10
|
+
exports.SL_TASKS_REGISTERED = 'sealightsTasksRegistered';
|
|
11
|
+
exports.EXCLUDED_TESTS_TASK = 'getExcludedTests';
|
|
12
|
+
exports.X_SL_SERVER = 'x-sl-server';
|
|
13
|
+
exports.REPORT_TEST_END_TASK = 'reportTestEnd';
|
|
14
|
+
exports.SL_COLORING_EVENTS = {
|
|
15
|
+
SET_CONTEXT: 'set:context',
|
|
16
|
+
DELETE_CONTEXT: 'delete:context',
|
|
17
|
+
};
|
|
18
|
+
exports.SL_COLORING_HEADERS = {
|
|
19
|
+
TEST_NAME: 'x-sl-test-name',
|
|
20
|
+
TEST_SESSION_ID: 'x-sl-test-session-id',
|
|
21
|
+
};
|
|
22
|
+
var TEST_STATUS;
|
|
23
|
+
(function (TEST_STATUS) {
|
|
24
|
+
TEST_STATUS["SKIPPED"] = "skipped";
|
|
25
|
+
TEST_STATUS["PENDING"] = "pending";
|
|
26
|
+
})(TEST_STATUS || (exports.TEST_STATUS = TEST_STATUS = {}));
|
|
27
|
+
//# sourceMappingURL=const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG;IACpC,gBAAgB,EAAE,qBAAqB;IACvC,KAAK,EAAE,UAAU;IACjB,UAAU,EAAE,eAAe;IAC3B,MAAM,EAAE,WAAW;CACpB,CAAC;AAEW,QAAA,mBAAmB,GAAG,0BAA0B,CAAC;AACjD,QAAA,mBAAmB,GAAG,kBAAkB,CAAC;AAEzC,QAAA,WAAW,GAAG,aAAa,CAAC;AAE5B,QAAA,oBAAoB,GAAG,eAAe,CAAC;AAEvC,QAAA,kBAAkB,GAAG;IAChC,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEW,QAAA,mBAAmB,GAAG;IACjC,SAAS,EAAE,gBAAgB;IAC3B,eAAe,EAAE,sBAAsB;CACxC,CAAC;AAEF,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;AACrB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerSealightsTasks } from './config';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerSealightsTasks = void 0;
|
|
4
|
+
var config_1 = require("./config");
|
|
5
|
+
Object.defineProperty(exports, "registerSealightsTasks", { enumerable: true, get: function () { return config_1.registerSealightsTasks; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkD;AAAzC,gHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
declare class TestSessionService {
|
|
2
|
+
private static instance;
|
|
3
|
+
private apiToken;
|
|
4
|
+
private baseUrl;
|
|
5
|
+
private buildSessionId;
|
|
6
|
+
private labId;
|
|
7
|
+
private testStage;
|
|
8
|
+
private testSessionId;
|
|
9
|
+
private testSessionsV1Instance;
|
|
10
|
+
private testSessionsV2Instance;
|
|
11
|
+
private excludedTests;
|
|
12
|
+
private configurationError;
|
|
13
|
+
private constructor();
|
|
14
|
+
static getInstance(): TestSessionService;
|
|
15
|
+
setConfig(apiToken: string, testStage: string, buildSessionId: string, labId?: string): void;
|
|
16
|
+
private createInstanceV1;
|
|
17
|
+
private createInstanceV2;
|
|
18
|
+
createTestSession(testStage?: string): Promise<void>;
|
|
19
|
+
endTestSession(): Promise<void>;
|
|
20
|
+
getTestRecommendations(): Promise<Record<string, string>>;
|
|
21
|
+
sendTestEvent(name: string, start: number, end: number, status: string): Promise<void>;
|
|
22
|
+
get _testSessionId(): string;
|
|
23
|
+
get _excludedTests(): Record<string, string>;
|
|
24
|
+
static runServiceMethodSafe(target: unknown, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor;
|
|
25
|
+
}
|
|
26
|
+
export declare const SealightsTestSessionService: TestSessionService;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.SealightsTestSessionService = void 0;
|
|
19
|
+
const axios_1 = require("axios");
|
|
20
|
+
const jwt_decode_1 = require("jwt-decode");
|
|
21
|
+
const const_1 = require("./const");
|
|
22
|
+
class TestSessionService {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.apiToken = null;
|
|
25
|
+
this.baseUrl = null;
|
|
26
|
+
this.buildSessionId = null;
|
|
27
|
+
this.labId = null;
|
|
28
|
+
this.testStage = null;
|
|
29
|
+
this.testSessionId = null;
|
|
30
|
+
this.testSessionsV1Instance = null;
|
|
31
|
+
this.testSessionsV2Instance = null;
|
|
32
|
+
this.excludedTests = null;
|
|
33
|
+
this.configurationError = false;
|
|
34
|
+
}
|
|
35
|
+
static getInstance() {
|
|
36
|
+
if (!TestSessionService.instance) {
|
|
37
|
+
TestSessionService.instance = new TestSessionService();
|
|
38
|
+
}
|
|
39
|
+
return TestSessionService.instance;
|
|
40
|
+
}
|
|
41
|
+
setConfig(apiToken, testStage, buildSessionId, labId) {
|
|
42
|
+
if (!(buildSessionId === null || buildSessionId === void 0 ? void 0 : buildSessionId.length) && !(labId === null || labId === void 0 ? void 0 : labId.length)) {
|
|
43
|
+
this.configurationError = true;
|
|
44
|
+
throw new Error('At least one of buildSessionId/labId must be provided for Sealights integration. Test suite will resume with disabled integration.');
|
|
45
|
+
}
|
|
46
|
+
const decoded = (0, jwt_decode_1.default)(apiToken);
|
|
47
|
+
this.baseUrl = decoded[const_1.X_SL_SERVER];
|
|
48
|
+
this.apiToken = apiToken;
|
|
49
|
+
this.buildSessionId = buildSessionId;
|
|
50
|
+
this.labId = labId;
|
|
51
|
+
this.testStage = testStage;
|
|
52
|
+
this.createInstanceV1();
|
|
53
|
+
this.createInstanceV2();
|
|
54
|
+
}
|
|
55
|
+
createInstanceV1() {
|
|
56
|
+
var _a;
|
|
57
|
+
this.testSessionsV1Instance = axios_1.default.create({
|
|
58
|
+
baseURL: (_a = this.baseUrl) === null || _a === void 0 ? void 0 : _a.replace('/api', '/sl-api/v1/test-sessions'),
|
|
59
|
+
headers: {
|
|
60
|
+
Authorization: `Bearer ${this.apiToken}`,
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
createInstanceV2() {
|
|
65
|
+
var _a;
|
|
66
|
+
this.testSessionsV2Instance = axios_1.default.create({
|
|
67
|
+
baseURL: (_a = this.baseUrl) === null || _a === void 0 ? void 0 : _a.replace('/api', '/sl-api/v2/test-sessions'),
|
|
68
|
+
headers: {
|
|
69
|
+
Authorization: `Bearer ${this.apiToken}`,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
createTestSession(testStage = this.testStage) {
|
|
74
|
+
var _a;
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const { data } = yield ((_a = this.testSessionsV1Instance) === null || _a === void 0 ? void 0 : _a.post('/', {
|
|
77
|
+
testStage,
|
|
78
|
+
bsid: this.buildSessionId,
|
|
79
|
+
labid: this.labId,
|
|
80
|
+
}));
|
|
81
|
+
this.testSessionId = data.data.testSessionId;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
endTestSession() {
|
|
85
|
+
var _a;
|
|
86
|
+
return (_a = this.testSessionsV1Instance) === null || _a === void 0 ? void 0 : _a.delete(`/${this.testSessionId}`);
|
|
87
|
+
}
|
|
88
|
+
getTestRecommendations() {
|
|
89
|
+
var _a, _b;
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
try {
|
|
92
|
+
const { data } = yield ((_a = this.testSessionsV1Instance) === null || _a === void 0 ? void 0 : _a.get(`/${this.testSessionId}/exclude-tests`));
|
|
93
|
+
this.excludedTests = (((_b = data === null || data === void 0 ? void 0 : data.data) === null || _b === void 0 ? void 0 : _b.length) ? data.data : []).reduce((acc, testName) => (Object.assign(Object.assign({}, acc), { [testName]: testName })), {});
|
|
94
|
+
return this._excludedTests;
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
console.error(e);
|
|
98
|
+
this.excludedTests = null;
|
|
99
|
+
return this._excludedTests;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
sendTestEvent(name, start, end, status) {
|
|
104
|
+
var _a;
|
|
105
|
+
if (!!this._excludedTests[name] && status === const_1.TEST_STATUS.PENDING) {
|
|
106
|
+
status = const_1.TEST_STATUS.SKIPPED;
|
|
107
|
+
}
|
|
108
|
+
return (_a = this.testSessionsV2Instance) === null || _a === void 0 ? void 0 : _a.post(`/${this.testSessionId}`, [
|
|
109
|
+
{
|
|
110
|
+
name,
|
|
111
|
+
start,
|
|
112
|
+
end,
|
|
113
|
+
status,
|
|
114
|
+
},
|
|
115
|
+
]);
|
|
116
|
+
}
|
|
117
|
+
get _testSessionId() {
|
|
118
|
+
return this.testSessionId;
|
|
119
|
+
}
|
|
120
|
+
get _excludedTests() {
|
|
121
|
+
var _a;
|
|
122
|
+
return (_a = this.excludedTests) !== null && _a !== void 0 ? _a : {};
|
|
123
|
+
}
|
|
124
|
+
static runServiceMethodSafe(target, propertyKey, descriptor) {
|
|
125
|
+
const originalMethod = descriptor.value;
|
|
126
|
+
descriptor.value = function (...args) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
try {
|
|
129
|
+
if (this.configurationError) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return yield originalMethod.apply(this, args);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
console.error(`An error occurred in method ${propertyKey}:`, error);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
return descriptor;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
__decorate([
|
|
143
|
+
TestSessionService.runServiceMethodSafe
|
|
144
|
+
], TestSessionService.prototype, "setConfig", null);
|
|
145
|
+
__decorate([
|
|
146
|
+
TestSessionService.runServiceMethodSafe
|
|
147
|
+
], TestSessionService.prototype, "createTestSession", null);
|
|
148
|
+
__decorate([
|
|
149
|
+
TestSessionService.runServiceMethodSafe
|
|
150
|
+
], TestSessionService.prototype, "endTestSession", null);
|
|
151
|
+
__decorate([
|
|
152
|
+
TestSessionService.runServiceMethodSafe
|
|
153
|
+
], TestSessionService.prototype, "getTestRecommendations", null);
|
|
154
|
+
__decorate([
|
|
155
|
+
TestSessionService.runServiceMethodSafe
|
|
156
|
+
], TestSessionService.prototype, "sendTestEvent", null);
|
|
157
|
+
exports.SealightsTestSessionService = TestSessionService.getInstance();
|
|
158
|
+
//# sourceMappingURL=sealights-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sealights-service.js","sourceRoot":"","sources":["../src/sealights-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const const_1 = require("./const");
|
|
13
|
+
const sealights_service_1 = require("./sealights-service");
|
|
14
|
+
const utils_1 = require("./utils");
|
|
15
|
+
function registerHooks() {
|
|
16
|
+
before(function () {
|
|
17
|
+
cy.task(const_1.EXCLUDED_TESTS_TASK).then({ timeout: 20000 }, (excludedTests) => {
|
|
18
|
+
markExcludedTests(this.test.parent, excludedTests);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
after((done) => {
|
|
22
|
+
cy.window().then((win) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
var _a, _b, _c;
|
|
24
|
+
if (typeof ((_a = win === null || win === void 0 ? void 0 : win.$SealightsAgent) === null || _a === void 0 ? void 0 : _a.sendAllFootprints) !== 'function') {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
yield ((_c = (_b = win === null || win === void 0 ? void 0 : win.$SealightsAgent) === null || _b === void 0 ? void 0 : _b.sendAllFootprints) === null || _c === void 0 ? void 0 : _c.call(_b));
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
beforeEach(() => {
|
|
31
|
+
cy.window().then((win) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
const agentLoaded = yield (0, utils_1.checkAgentLoaded)(win, 100, 1);
|
|
33
|
+
if (!agentLoaded) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const testName = Cypress.currentTest.title;
|
|
37
|
+
const customEvent = new CustomEvent(const_1.SL_COLORING_EVENTS.SET_CONTEXT, {
|
|
38
|
+
detail: {
|
|
39
|
+
baggage: {
|
|
40
|
+
[const_1.SL_COLORING_HEADERS.TEST_NAME]: testName,
|
|
41
|
+
[const_1.SL_COLORING_HEADERS.TEST_SESSION_ID]: sealights_service_1.SealightsTestSessionService._testSessionId,
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
win.dispatchEvent(customEvent);
|
|
46
|
+
}));
|
|
47
|
+
});
|
|
48
|
+
afterEach(function () {
|
|
49
|
+
const currentTest = this.currentTest;
|
|
50
|
+
const duration = currentTest.duration;
|
|
51
|
+
const testName = currentTest.title;
|
|
52
|
+
const suiteName = currentTest.parent.title;
|
|
53
|
+
const state = currentTest.state;
|
|
54
|
+
cy.task(const_1.REPORT_TEST_END_TASK, { testName, suiteName, duration, state });
|
|
55
|
+
});
|
|
56
|
+
afterEach((done) => {
|
|
57
|
+
cy.window().then((win) => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
var _a, _b, _c;
|
|
59
|
+
if (typeof ((_a = win === null || win === void 0 ? void 0 : win.$SealightsAgent) === null || _a === void 0 ? void 0 : _a.sendAllFootprints) !== 'function') {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
yield ((_c = (_b = win === null || win === void 0 ? void 0 : win.$SealightsAgent) === null || _b === void 0 ? void 0 : _b.sendAllFootprints) === null || _c === void 0 ? void 0 : _c.call(_b));
|
|
63
|
+
}));
|
|
64
|
+
});
|
|
65
|
+
function markExcludedTests(suite, excludedTests) {
|
|
66
|
+
if (!excludedTests) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
suite.suites.forEach((suite) => markExcludedTests(suite, excludedTests));
|
|
70
|
+
suite.tests.forEach((test) => {
|
|
71
|
+
test.pending = excludedTests[(0, utils_1.constructTestName)(suite.title, test.title)] ? true : test.pending;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (Cypress.env(const_1.SL_TASKS_REGISTERED) !== true) {
|
|
76
|
+
registerHooks();
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../src/support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkAgentLoaded = exports.constructTestName = void 0;
|
|
4
|
+
function constructTestName(suiteName, testName) {
|
|
5
|
+
return `${suiteName} - ${testName}`;
|
|
6
|
+
}
|
|
7
|
+
exports.constructTestName = constructTestName;
|
|
8
|
+
function checkAgentLoaded(win, intervalMs = 100, timeoutSeconds = 5) {
|
|
9
|
+
return new Promise((resolve) => {
|
|
10
|
+
const start = Date.now();
|
|
11
|
+
const intervalId = setInterval(() => {
|
|
12
|
+
if (win['$SealightsAgent'] !== undefined) {
|
|
13
|
+
clearInterval(intervalId);
|
|
14
|
+
resolve(true);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
const elapsed = Date.now() - start;
|
|
18
|
+
if (elapsed >= timeoutSeconds * 1000) {
|
|
19
|
+
clearInterval(intervalId);
|
|
20
|
+
resolve(false);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}, intervalMs);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
exports.checkAgentLoaded = checkAgentLoaded;
|
|
27
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IACnE,OAAO,GAAG,SAAS,MAAM,QAAQ,EAAE,CAAC;AACtC,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAC9B,GAAsB,EACtB,aAAqB,GAAG,EACxB,iBAAyB,CAAC;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE;gBACxC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACnC,IAAI,OAAO,IAAI,cAAc,GAAG,IAAI,EAAE;oBACpC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;iBAChB;aACF;QACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,4CAoBC"}
|