@zohodesk/testinglibrary 0.4.86-n18-experimental → 0.4.87-n18-experimental

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zohodesk/testinglibrary",
3
- "version": "0.4.86-n18-experimental",
3
+ "version": "0.4.87-n18-experimental",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "scripts": {
@@ -8,6 +8,7 @@
8
8
  "test": "jest",
9
9
  "clean": "rm -rf build && mkdir build",
10
10
  "build-babel": "babel -d ./build ./src --copy-files",
11
+ "copy-common": "cp -r src/common build/",
11
12
  "build": "npm run clean && npm run build-babel",
12
13
  "prepare": "npm run build",
13
14
  "lint": "eslint src/* --fix"
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- var _testinglibrary = require("@zohodesk/testinglibrary");
4
- const {
5
- BeforeScenario,
6
- Given
7
- } = (0, _testinglibrary.createBdd)();
8
- BeforeScenario(async function ({
9
- actorCtx
10
- }) {
11
- // This will run before each scenario and set all the fixtures into this context
12
- this.setActor = async role => {
13
- const userPage = actorCtx.actorsObj[role];
14
- if (userPage) {
15
- this.page = userPage.page;
16
- this.context = userPage.context;
17
- this.browser = userPage.browser;
18
- this.executionContext = userPage.actorInfo;
19
- } else {
20
- const availableRoles = Object.keys(actorCtx.actorsObj);
21
- throw new Error(`Actor "${role}" not found in user pages. Available roles: [${availableRoles.join(', ')}]`);
22
- }
23
- };
24
- });
25
- Given("access the {string} profile page", async function ({
26
- page
27
- }, userRole) {
28
- await this.setActor(userRole);
29
- });
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _logger = require("../../../utils/logger");
8
- var _customFixturesHelper = require("../helpers/customFixturesHelper");
9
- var _loginDefaultStepsHelper = require("../helpers/auth/loginDefaultStepsHelper");
10
- class additionalActorContext {
11
- constructor() {
12
- this.actorsObj = {};
13
- }
14
- async setupAdditionalActors(browser, $tags, testInfo) {
15
- try {
16
- const actorInfoMap = (0, _customFixturesHelper.getCustomAccountDetails)($tags);
17
- const additionalActors = actorInfoMap.additional;
18
- await Promise.all(Object.entries(additionalActors).map(async ([role, actorInfo]) => {
19
- let context = await browser.newContext();
20
- let page = await context.newPage();
21
- let ctxTestDetails = {
22
- page,
23
- $tags,
24
- context,
25
- ...actorInfo
26
- };
27
- await (0, _loginDefaultStepsHelper.executeDefaultLoginSteps)(context, testInfo, ctxTestDetails, actorInfo);
28
- this.actorsObj[role] = {
29
- role,
30
- browser,
31
- context,
32
- page,
33
- actorInfo
34
- };
35
- }));
36
- } catch (error) {
37
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to setup additional actors:`, error);
38
- throw error;
39
- }
40
- }
41
- async cleanup() {
42
- for (const actor of Object.values(this.actorsObj)) {
43
- try {
44
- await actor.context.close();
45
- } catch (error) {
46
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to close context for actor ${actor.role}:`, error);
47
- }
48
- }
49
- }
50
- }
51
- var _default = exports.default = {
52
- actorCtx: async ({
53
- $tags,
54
- browser
55
- }, use, testInfo) => {
56
- const ctxObject = new additionalActorContext();
57
- await ctxObject.setupAdditionalActors(browser, $tags, testInfo);
58
- await use(ctxObject);
59
- await ctxObject.cleanup();
60
- }
61
- };
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.executeDefaultLoginSteps = executeDefaultLoginSteps;
7
- exports.loginSteps = loginSteps;
8
- exports.performDefaultPageSteps = performDefaultPageSteps;
9
- exports.verifyPageIsLoaded = verifyPageIsLoaded;
10
- var _auth = require("../auth");
11
- var _readConfigFile = require("../../readConfigFile");
12
- let {
13
- testSetup,
14
- isAuthMode
15
- } = (0, _readConfigFile.generateConfigFromFile)();
16
- async function loginSteps(pageDetail) {
17
- const {
18
- page
19
- } = pageDetail;
20
- if (testSetup.loginSteps && typeof testSetup.loginSteps === 'function') {
21
- return await testSetup.loginSteps(pageDetail);
22
- } else {
23
- await page.goto(process.env.domain);
24
- }
25
- }
26
- async function performDefaultPageSteps(testInfo) {
27
- if (testSetup.page && typeof testSetup.page === 'function') {
28
- await testSetup.page(testInfo);
29
- }
30
- }
31
- async function verifyPageIsLoaded(testInfo) {
32
- if (testSetup.validateLogin && typeof testSetup.validateLogin === 'function') {
33
- return await testSetup.validateLogin(testInfo);
34
- }
35
- return true;
36
- }
37
- async function executeDefaultLoginSteps(context, testInfo, testDetails, testPortalDetails) {
38
- if (!isAuthMode) {
39
- return;
40
- }
41
- try {
42
- const projectName = testInfo.project.name;
43
- if (testPortalDetails && projectName !== 'setup' && projectName !== 'cleanup') {
44
- await context.clearCookies();
45
- await (0, _auth.performLoginSteps)(testDetails, async testInfo => {
46
- return await verifyPageIsLoaded(testInfo);
47
- }, loginSteps);
48
- process.env.actorInfo = JSON.stringify(testPortalDetails);
49
- }
50
- } catch (error) {
51
- Logger.log(Logger.FAILURE_TYPE, 'Error while executing the default login steps:', error);
52
- }
53
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getCustomAccountDetails = getCustomAccountDetails;
7
- var _auth = require("../helpers/auth");
8
- var _additionalProfiles = require("../helpers/additionalProfiles");
9
- var _logger = require("../../../utils/logger");
10
- /* eslint-disable global-require */
11
-
12
- function getTagInputFromSelectedTags(tags, inputString) {
13
- const selectedTag = [...tags].reverse().find(tag => tag.startsWith(inputString));
14
- let tagInput = null;
15
- if (selectedTag) {
16
- tagInput = selectedTag.split(`${inputString}_`).pop().toLowerCase();
17
- }
18
- return tagInput;
19
- }
20
- function getCustomAccountDetails(tags) {
21
- try {
22
- const tagsTobeFiltered = ['@profile', '@edition', '@beta', '@portal', '@additional_profile'];
23
- const filteredTags = tags.filter(tag => tagsTobeFiltered.some(prefix => tag.startsWith(prefix)));
24
- if (filteredTags && filteredTags.length > 0) {
25
- const portalInfo = getTagInputFromSelectedTags(filteredTags, '@portal');
26
- const betaFeature = getTagInputFromSelectedTags(filteredTags, '@beta');
27
- const profileInfo = getTagInputFromSelectedTags(filteredTags, '@profile');
28
- const editionInfo = getTagInputFromSelectedTags(filteredTags, '@edition');
29
- const mainActor = (0, _auth.getUserForSelectedEditionAndProfile)(editionInfo, profileInfo, betaFeature, portalInfo);
30
- const additionalActors = (0, _additionalProfiles.additionProfiles)(tags, editionInfo, betaFeature, portalInfo);
31
- return {
32
- main: mainActor,
33
- additional: additionalActors
34
- };
35
- }
36
- return {
37
- main: (0, _auth.getDefaultActor)(),
38
- additional: {}
39
- };
40
- } catch (err) {
41
- _logger.Logger.log(_logger.Logger.FAILURE_TYPE, 'Error while getting custom account details:', err);
42
- }
43
- }
@@ -1,4 +0,0 @@
1
- {
2
- "status": "passed",
3
- "failedTests": []
4
- }
@@ -1,260 +0,0 @@
1
- <html><head><meta charset="utf-8"/><title>Unit Report</title><style type="text/css">html,
2
- body {
3
- font-family: Arial, Helvetica, sans-serif;
4
- font-size: 1rem;
5
- margin: 0;
6
- padding: 0;
7
- color: #333;
8
- }
9
- body {
10
- padding: 2rem 1rem;
11
- font-size: 0.85rem;
12
- }
13
- .jesthtml-content {
14
- margin: 0 auto;
15
- max-width: 70rem;
16
- }
17
- header {
18
- display: flex;
19
- align-items: center;
20
- }
21
- #title {
22
- margin: 0;
23
- flex-grow: 1;
24
- }
25
- #logo {
26
- height: 4rem;
27
- }
28
- #timestamp {
29
- color: #777;
30
- margin-top: 0.5rem;
31
- }
32
-
33
- /** SUMMARY */
34
- #summary {
35
- color: #333;
36
- margin: 2rem 0;
37
- display: flex;
38
- font-family: monospace;
39
- font-size: 1rem;
40
- }
41
- #summary > div {
42
- margin-right: 2rem;
43
- background: #eee;
44
- padding: 1rem;
45
- min-width: 15rem;
46
- }
47
- #summary > div:last-child {
48
- margin-right: 0;
49
- }
50
- @media only screen and (max-width: 720px) {
51
- #summary {
52
- flex-direction: column;
53
- }
54
- #summary > div {
55
- margin-right: 0;
56
- margin-top: 2rem;
57
- }
58
- #summary > div:first-child {
59
- margin-top: 0;
60
- }
61
- }
62
-
63
- .summary-total {
64
- font-weight: bold;
65
- margin-bottom: 0.5rem;
66
- }
67
- .summary-passed {
68
- color: #4f8a10;
69
- border-left: 0.4rem solid #4f8a10;
70
- padding-left: 0.5rem;
71
- }
72
- .summary-failed,
73
- .summary-obsolete-snapshots {
74
- color: #d8000c;
75
- border-left: 0.4rem solid #d8000c;
76
- padding-left: 0.5rem;
77
- }
78
- .summary-pending {
79
- color: #9f6000;
80
- border-left: 0.4rem solid #9f6000;
81
- padding-left: 0.5rem;
82
- }
83
- .summary-empty {
84
- color: #999;
85
- border-left: 0.4rem solid #999;
86
- }
87
-
88
- .test-result {
89
- padding: 1rem;
90
- margin-bottom: 0.25rem;
91
- }
92
- .test-result:last-child {
93
- border: 0;
94
- }
95
- .test-result.passed {
96
- background-color: #dff2bf;
97
- color: #4f8a10;
98
- }
99
- .test-result.failed {
100
- background-color: #ffbaba;
101
- color: #d8000c;
102
- }
103
- .test-result.pending {
104
- background-color: #ffdf61;
105
- color: #9f6000;
106
- }
107
-
108
- .test-info {
109
- display: flex;
110
- justify-content: space-between;
111
- }
112
- .test-suitename {
113
- width: 20%;
114
- text-align: left;
115
- font-weight: bold;
116
- word-break: break-word;
117
- }
118
- .test-title {
119
- width: 40%;
120
- text-align: left;
121
- font-style: italic;
122
- }
123
- .test-status {
124
- width: 20%;
125
- text-align: right;
126
- }
127
- .test-duration {
128
- width: 10%;
129
- text-align: right;
130
- font-size: 0.75rem;
131
- }
132
-
133
- .failureMessages {
134
- padding: 0 1rem;
135
- margin-top: 1rem;
136
- border-top: 1px dashed #d8000c;
137
- }
138
- .failureMessages.suiteFailure {
139
- border-top: none;
140
- }
141
- .failureMsg {
142
- white-space: pre-wrap;
143
- white-space: -moz-pre-wrap;
144
- white-space: -pre-wrap;
145
- white-space: -o-pre-wrap;
146
- word-wrap: break-word;
147
- }
148
-
149
- .suite-container {
150
- margin-bottom: 2rem;
151
- }
152
- .suite-container > input[type="checkbox"] {
153
- position: absolute;
154
- left: -100vw;
155
- }
156
- .suite-container label {
157
- display: block;
158
- }
159
- .suite-container .suite-tests {
160
- overflow-y: hidden;
161
- height: 0;
162
- }
163
- .suite-container > input[type="checkbox"]:checked ~ .suite-tests {
164
- height: auto;
165
- overflow: visible;
166
- }
167
- .suite-info {
168
- padding: 1rem;
169
- background-color: #eee;
170
- color: #777;
171
- display: flex;
172
- align-items: center;
173
- margin-bottom: 0.25rem;
174
- }
175
- .suite-info:hover {
176
- background-color: #ddd;
177
- cursor: pointer;
178
- }
179
- .suite-info .suite-path {
180
- word-break: break-all;
181
- flex-grow: 1;
182
- font-family: monospace;
183
- font-size: 1rem;
184
- }
185
- .suite-info .suite-time {
186
- margin-left: 0.5rem;
187
- padding: 0.2rem 0.3rem;
188
- font-size: 0.75rem;
189
- }
190
- .suite-info .suite-time.warn {
191
- background-color: #d8000c;
192
- color: #fff;
193
- }
194
- .suite-info:before {
195
- content: "\2303";
196
- display: inline-block;
197
- margin-right: 0.5rem;
198
- transform: rotate(0deg);
199
- }
200
- .suite-container > input[type="checkbox"]:checked ~ label .suite-info:before {
201
- transform: rotate(180deg);
202
- }
203
-
204
- /* CONSOLE LOGS */
205
- .suite-consolelog {
206
- margin-bottom: 0.25rem;
207
- padding: 1rem;
208
- background-color: #efefef;
209
- }
210
- .suite-consolelog-header {
211
- font-weight: bold;
212
- }
213
- .suite-consolelog-item {
214
- padding: 0.5rem;
215
- }
216
- .suite-consolelog-item pre {
217
- margin: 0.5rem 0;
218
- white-space: pre-wrap;
219
- white-space: -moz-pre-wrap;
220
- white-space: -pre-wrap;
221
- white-space: -o-pre-wrap;
222
- word-wrap: break-word;
223
- }
224
- .suite-consolelog-item-origin {
225
- color: #777;
226
- font-weight: bold;
227
- }
228
- .suite-consolelog-item-message {
229
- color: #000;
230
- font-size: 1rem;
231
- padding: 0 0.5rem;
232
- }
233
-
234
- /* OBSOLETE SNAPSHOTS */
235
- .suite-obsolete-snapshots {
236
- margin-bottom: 0.25rem;
237
- padding: 1rem;
238
- background-color: #ffbaba;
239
- color: #d8000c;
240
- }
241
- .suite-obsolete-snapshots-header {
242
- font-weight: bold;
243
- }
244
- .suite-obsolete-snapshots-item {
245
- padding: 0.5rem;
246
- }
247
- .suite-obsolete-snapshots-item pre {
248
- margin: 0.5rem 0;
249
- white-space: pre-wrap;
250
- white-space: -moz-pre-wrap;
251
- white-space: -pre-wrap;
252
- white-space: -o-pre-wrap;
253
- word-wrap: break-word;
254
- }
255
- .suite-obsolete-snapshots-item-message {
256
- color: #000;
257
- font-size: 1rem;
258
- padding: 0 0.5rem;
259
- }
260
- </style></head><body><div class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><div id="metadata-container"><div id="timestamp">Started: 2025-09-03 08:57:31</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed ">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed ">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><input id="collapsible-0" type="checkbox" class="toggle" checked="checked"/><label for="collapsible-0"><div class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js</div><div class="suite-time">0.851s</div></div></label><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">executionContext</div><div class="test-title">should pass actorInfo with details from getCustomAccountDetails to use</div><div class="test-status">passed</div><div class="test-duration">0.004s</div></div></div></div></div></div></body></html>