@zohodesk/testinglibrary 0.1.9 → 0.1.12-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/.babelrc +4 -2
- package/.claude/settings.local.json +14 -0
- package/.gitlab-ci.yml +206 -0
- package/README.md +264 -1
- package/build/common/data-generator/steps/DataGenerator.spec.js +19 -0
- package/build/common/data-generator/steps/DataGeneratorStepsHelper.js +21 -0
- package/build/common/multi-actor/steps/multiActorHandling.spec.js +26 -0
- package/build/common/searchFake/helpers/rpcRequestHelper.js +52 -0
- package/build/common/searchFake/steps/searchFake.spec.js +85 -0
- package/build/core/dataGenerator/DataGenerator.js +161 -0
- package/build/core/dataGenerator/DataGeneratorError.js +60 -0
- package/build/core/dataGenerator/DataGeneratorHelper.js +121 -0
- package/build/core/dataGenerator/authenticator/Authenticator.js +37 -0
- package/build/core/dataGenerator/authenticator/CookieAuthenticator.js +48 -0
- package/build/core/dataGenerator/authenticator/JWTauthenticator.js +59 -0
- package/build/core/dataGenerator/authenticator/OAuthAuthenticator.js +26 -0
- package/build/core/dataGenerator/authenticator/OrgOAuthAuthenticator.js +26 -0
- package/build/core/dataGenerator/authenticator/cookieAuthConfig.js +11 -0
- package/build/core/jest/preprocessor/jsPreprocessor.js +2 -7
- package/build/core/jest/setup/index.js +1 -7
- package/build/core/playwright/builtInFixtures/actorContext.js +78 -0
- package/build/core/playwright/builtInFixtures/caseTimeout.js +20 -0
- package/build/core/playwright/builtInFixtures/context.js +34 -16
- package/build/core/playwright/builtInFixtures/executionContext.js +17 -0
- package/build/core/playwright/builtInFixtures/i18N.js +8 -0
- package/build/core/playwright/builtInFixtures/index.js +7 -1
- package/build/core/playwright/builtInFixtures/page.js +22 -66
- package/build/core/playwright/clear-caches.js +17 -5
- package/build/core/playwright/codegen.js +4 -21
- package/build/core/playwright/configuration/Configuration.js +25 -0
- package/build/core/playwright/configuration/ConfigurationHelper.js +45 -0
- package/build/core/playwright/configuration/UserArgs.js +12 -0
- package/build/core/playwright/constants/configConstants.js +17 -0
- package/build/core/playwright/constants/failureTagConstants.js +17 -0
- package/build/core/playwright/constants/fileMutexConfig.js +9 -0
- package/build/core/playwright/constants/reporterConstants.js +20 -0
- package/build/core/playwright/constants/retryConstants.js +8 -0
- package/build/core/playwright/custom-commands.js +1 -1
- package/build/core/playwright/env-initializer.js +28 -9
- package/build/core/playwright/fixtures.js +24 -0
- package/build/core/playwright/helpers/additionalProfiles.js +25 -0
- package/build/core/playwright/helpers/auth/accountLogin.js +4 -1
- package/build/core/playwright/helpers/auth/checkAuthCookies.js +27 -23
- package/build/core/playwright/helpers/auth/getUsers.js +92 -45
- package/build/core/playwright/helpers/auth/index.js +30 -5
- package/build/core/playwright/helpers/auth/loginDefaultStepsHelper.js +62 -0
- package/build/core/playwright/helpers/auth/loginSteps.js +40 -22
- package/build/core/playwright/helpers/browserTimeoutFactor.js +16 -0
- package/build/core/playwright/helpers/caseTimeoutResolver.js +37 -0
- package/build/core/playwright/helpers/checkAuthDirectory.js +27 -0
- package/build/core/playwright/helpers/configFileNameProvider.js +26 -5
- package/build/core/playwright/helpers/configPathResolver.js +38 -0
- package/build/core/playwright/helpers/contextFailureHandler.js +81 -0
- package/build/core/playwright/helpers/customFixturesHelper.js +58 -0
- package/build/core/playwright/helpers/failureTagClassifier.js +197 -0
- package/build/core/playwright/helpers/fileMutex.js +71 -0
- package/build/core/playwright/helpers/logCollector.js +147 -0
- package/build/core/playwright/helpers/parseUserArgs.js +2 -3
- package/build/core/playwright/helpers/runtimeLogAnnotator.js +140 -0
- package/build/core/playwright/helpers/runtimeLogPath.js +61 -0
- package/build/core/playwright/helpers/runtimeLogReader.js +54 -0
- package/build/core/playwright/helpers/thirdPartyLib.js +13 -0
- package/build/core/playwright/index.js +8 -76
- package/build/core/playwright/patterns/casePatterns.js +9 -0
- package/build/core/playwright/patterns/codePatterns.js +9 -0
- package/build/core/playwright/patterns/environmentPatterns.js +15 -0
- package/build/core/playwright/patterns/index.js +33 -0
- package/build/core/playwright/patterns/logCollectorIgnorePatterns.js +15 -0
- package/build/core/playwright/patterns/toolPatterns.js +26 -0
- package/build/core/playwright/readConfigFile.js +49 -16
- package/build/core/playwright/reporter/PlaywrightReporter.js +58 -0
- package/build/core/playwright/reporter/Reporter.js +65 -0
- package/build/core/playwright/reporter/ShardReporter.js +58 -0
- package/build/core/playwright/reporter/UnitReporter.js +27 -0
- package/build/core/playwright/reporter/helpers/mergeAbortedTests.js +78 -0
- package/build/core/playwright/runner/Runner.js +22 -0
- package/build/core/playwright/runner/RunnerHelper.js +43 -0
- package/build/core/playwright/runner/RunnerTypes.js +17 -0
- package/build/core/playwright/runner/SpawnRunner.js +93 -0
- package/build/core/playwright/setup/Project.js +35 -0
- package/build/core/playwright/setup/ProjectConfiguration.js +66 -0
- package/build/core/playwright/setup/config-creator.js +58 -40
- package/build/core/playwright/setup/config-utils.js +68 -37
- package/build/core/playwright/setup/custom-reporter.js +137 -14
- package/build/core/playwright/setup/merge-config.js +32 -0
- package/build/core/playwright/setup/qc-custom-reporter.js +342 -0
- package/build/core/playwright/spawnInheritChild.js +71 -0
- package/build/core/playwright/tagProcessor.js +69 -0
- package/build/core/playwright/test-runner.js +44 -98
- package/build/core/playwright/types.js +4 -1
- package/build/core/playwright/validateFeature.js +28 -0
- package/build/decorators.d.ts +1 -1
- package/build/decorators.js +1 -1
- package/build/index.d.ts +17 -19
- package/build/index.js +28 -6
- package/build/lib/cli.js +42 -7
- package/build/setup-folder-structure/helper.js +2 -0
- package/build/setup-folder-structure/samples/accountLogin-sample.js +19 -0
- package/build/setup-folder-structure/samples/actors-index.js +2 -0
- package/build/setup-folder-structure/samples/auth-setup-sample.js +10 -67
- package/build/setup-folder-structure/samples/editions-index.js +3 -0
- package/build/setup-folder-structure/samples/free-sample.json +25 -0
- package/build/setup-folder-structure/samples/settings.json +7 -0
- package/build/setup-folder-structure/samples/testSetup-sample.js +14 -0
- package/build/setup-folder-structure/samples/uat-config-sample.js +7 -2
- package/build/setup-folder-structure/setupProject.js +23 -5
- package/build/test/core/dataGenerator/__tests__/DataGenerator.test.js +311 -0
- package/build/test/core/dataGenerator/__tests__/DataGeneratorHelper.test.js +204 -0
- package/build/test/core/dataGenerator/__tests__/DataGeneratorResolution.test.js +126 -0
- package/build/test/core/dataGenerator/authenticator/__tests__/Authenticator.test.js +88 -0
- package/build/test/core/dataGenerator/authenticator/__tests__/JWTauthenticator.test.js +136 -0
- package/build/test/core/dataGenerator/authenticator/__tests__/OAuthAuthenticator.test.js +39 -0
- package/build/test/core/dataGenerator/authenticator/__tests__/OrgOAuthAuthenticator.test.js +39 -0
- package/build/test/core/playwright/__tests__/spawnInheritChild.test.js +148 -0
- package/build/test/core/playwright/__tests__/tagProcessor.test.js +94 -0
- package/build/test/core/playwright/__tests__/validateFeature.test.js +72 -0
- package/build/test/core/playwright/buildInFixtures/__tests__/caseTimeout.test.js +96 -0
- package/build/test/core/playwright/buildInFixtures/__tests__/executionContext.test.js +27 -0
- package/build/test/core/playwright/configuration/__tests__/Configuration.test.js +53 -0
- package/build/test/core/playwright/helpers/__tests__/additionalProfiles.test.js +45 -0
- package/build/test/core/playwright/helpers/__tests__/configFileNameProvider.test.js +75 -0
- package/build/test/core/playwright/helpers/__tests__/configPathResolver.test.js +55 -0
- package/build/test/core/playwright/helpers/__tests__/customFixturesHelper.test.js +51 -0
- package/build/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js +604 -0
- package/build/test/core/playwright/helpers/__tests__/fileMutex.test.js +79 -0
- package/build/test/core/playwright/helpers/__tests__/getUsers_ListOfActors.test.js +83 -0
- package/build/test/core/playwright/helpers/__tests__/logCollector.test.js +163 -0
- package/build/test/core/playwright/helpers/__tests__/runtimeLogReader.test.js +112 -0
- package/build/test/core/playwright/helpers/auth/__tests__/checkAuthCookies.test.js +92 -0
- package/build/test/core/playwright/runner/__tests__/RunnerHelper.test.js +19 -0
- package/build/test/core/playwright/runner/__tests__/SpawnRunner.test.js +30 -0
- package/build/utils/cliArgsToObject.js +3 -0
- package/build/utils/commonUtils.js +20 -0
- package/build/utils/fileUtils.js +43 -1
- package/build/utils/logger.js +1 -30
- package/changelog.md +23 -0
- package/docs/CODE-REVIEW-AGENT.md +399 -0
- package/docs/code-review-instructions.md +157 -0
- package/jest.config.js +29 -11
- package/npm-shrinkwrap.json +14994 -4793
- package/package.json +39 -28
- package/playwright.config.js +13 -57
- package/unit_reports/unit-report.html +277 -0
- package/build/bdd-framework/cli/commands/env.js +0 -42
- package/build/bdd-framework/cli/commands/export.js +0 -47
- package/build/bdd-framework/cli/commands/test.js +0 -64
- package/build/bdd-framework/cli/index.js +0 -11
- package/build/bdd-framework/cli/options.js +0 -19
- package/build/bdd-framework/cli/worker.js +0 -13
- package/build/bdd-framework/config/configDir.js +0 -35
- package/build/bdd-framework/config/enrichReporterData.js +0 -23
- package/build/bdd-framework/config/env.js +0 -50
- package/build/bdd-framework/config/index.js +0 -94
- package/build/bdd-framework/config/lang.js +0 -14
- package/build/bdd-framework/cucumber/buildStepDefinition.js +0 -43
- package/build/bdd-framework/cucumber/createTestStep.js +0 -43
- package/build/bdd-framework/cucumber/formatter/EventDataCollector.js +0 -126
- package/build/bdd-framework/cucumber/formatter/GherkinDocumentParser.js +0 -72
- package/build/bdd-framework/cucumber/formatter/PickleParser.js +0 -25
- package/build/bdd-framework/cucumber/formatter/durationHelpers.js +0 -13
- package/build/bdd-framework/cucumber/formatter/getColorFns.js +0 -57
- package/build/bdd-framework/cucumber/formatter/index.js +0 -16
- package/build/bdd-framework/cucumber/formatter/locationHelpers.js +0 -16
- package/build/bdd-framework/cucumber/loadConfig.js +0 -17
- package/build/bdd-framework/cucumber/loadFeatures.js +0 -70
- package/build/bdd-framework/cucumber/loadSnippetBuilder.js +0 -20
- package/build/bdd-framework/cucumber/loadSteps.js +0 -47
- package/build/bdd-framework/cucumber/resolveFeaturePaths.js +0 -62
- package/build/bdd-framework/cucumber/stepArguments.js +0 -21
- package/build/bdd-framework/cucumber/types.js +0 -5
- package/build/bdd-framework/cucumber/valueChecker.js +0 -23
- package/build/bdd-framework/decorators.js +0 -18
- package/build/bdd-framework/gen/fixtures.js +0 -48
- package/build/bdd-framework/gen/formatter.js +0 -123
- package/build/bdd-framework/gen/i18n.js +0 -39
- package/build/bdd-framework/gen/index.js +0 -185
- package/build/bdd-framework/gen/testFile.js +0 -465
- package/build/bdd-framework/gen/testMeta.js +0 -60
- package/build/bdd-framework/gen/testNode.js +0 -60
- package/build/bdd-framework/gen/testPoms.js +0 -133
- package/build/bdd-framework/hooks/scenario.js +0 -130
- package/build/bdd-framework/hooks/worker.js +0 -89
- package/build/bdd-framework/index.js +0 -52
- package/build/bdd-framework/playwright/fixtureParameterNames.js +0 -93
- package/build/bdd-framework/playwright/getLocationInFile.js +0 -79
- package/build/bdd-framework/playwright/loadConfig.js +0 -42
- package/build/bdd-framework/playwright/loadUtils.js +0 -33
- package/build/bdd-framework/playwright/testTypeImpl.js +0 -61
- package/build/bdd-framework/playwright/transform.js +0 -88
- package/build/bdd-framework/playwright/types.js +0 -5
- package/build/bdd-framework/playwright/utils.js +0 -34
- package/build/bdd-framework/reporter/cucumber/base.js +0 -57
- package/build/bdd-framework/reporter/cucumber/custom.js +0 -73
- package/build/bdd-framework/reporter/cucumber/helper.js +0 -12
- package/build/bdd-framework/reporter/cucumber/html.js +0 -35
- package/build/bdd-framework/reporter/cucumber/index.js +0 -74
- package/build/bdd-framework/reporter/cucumber/json.js +0 -312
- package/build/bdd-framework/reporter/cucumber/junit.js +0 -205
- package/build/bdd-framework/reporter/cucumber/message.js +0 -20
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/AttachmentMapper.js +0 -64
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Builder.js +0 -196
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocument.js +0 -43
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocumentClone.js +0 -52
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/GherkinDocuments.js +0 -105
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Hook.js +0 -70
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Meta.js +0 -45
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Pickles.js +0 -27
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/Projects.js +0 -38
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCase.js +0 -128
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRun.js +0 -126
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestCaseRunHooks.js +0 -102
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepAttachments.js +0 -50
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/TestStepRun.js +0 -88
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/index.js +0 -30
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/pwUtils.js +0 -51
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/timing.js +0 -35
- package/build/bdd-framework/reporter/cucumber/messagesBuilder/types.js +0 -5
- package/build/bdd-framework/run/StepInvoker.js +0 -68
- package/build/bdd-framework/run/bddDataAttachment.js +0 -46
- package/build/bdd-framework/run/bddFixtures.js +0 -191
- package/build/bdd-framework/run/bddWorld.js +0 -79
- package/build/bdd-framework/run/bddWorldInternal.js +0 -15
- package/build/bdd-framework/snippets/index.js +0 -132
- package/build/bdd-framework/snippets/snippetSyntax.js +0 -43
- package/build/bdd-framework/snippets/snippetSyntaxDecorators.js +0 -26
- package/build/bdd-framework/snippets/snippetSyntaxTs.js +0 -18
- package/build/bdd-framework/stepDefinitions/createBdd.js +0 -66
- package/build/bdd-framework/stepDefinitions/decorators/class.js +0 -68
- package/build/bdd-framework/stepDefinitions/decorators/steps.js +0 -99
- package/build/bdd-framework/stepDefinitions/defineStep.js +0 -62
- package/build/bdd-framework/stepDefinitions/stepConfig.js +0 -24
- package/build/bdd-framework/utils/AutofillMap.js +0 -20
- package/build/bdd-framework/utils/exit.js +0 -62
- package/build/bdd-framework/utils/index.js +0 -93
- package/build/bdd-framework/utils/jsStringWrap.js +0 -44
- package/build/bdd-framework/utils/logger.js +0 -30
- package/build/bdd-framework/utils/stripAnsiEscapes.js +0 -20
- package/build/core/playwright/report-generator.js +0 -42
- package/build/core/playwright/tag-processor.js +0 -68
- package/build/setup-folder-structure/samples/authUsers-sample.json +0 -9
- package/build/setup-folder-structure/samples/env-config-sample.json +0 -21
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _rootPath = require("../../../utils/rootPath");
|
|
10
|
+
var _readConfigFile = require("../readConfigFile");
|
|
11
|
+
var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
|
|
12
|
+
var _spawnInheritChild = require("../spawnInheritChild");
|
|
13
|
+
var _Reporter = _interopRequireDefault(require("./Reporter"));
|
|
14
|
+
// The framework reporters live next to the playwright configs, they are resolved
|
|
15
|
+
// from here because this module no longer sits in the same folder as them.
|
|
16
|
+
const SETUP_DIR = _path.default.resolve(__dirname, '..', 'setup');
|
|
17
|
+
class PlaywrightReporter extends _Reporter.default {
|
|
18
|
+
static getType() {
|
|
19
|
+
return _Reporter.default.TYPES.PLAYWRIGHT;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Reporters used by a full run and by the merge of the shard blob reports.
|
|
24
|
+
*
|
|
25
|
+
* @returns {import('@playwright/test').PlaywrightTestConfig['reporter']}
|
|
26
|
+
*/
|
|
27
|
+
static getReporter({
|
|
28
|
+
stage,
|
|
29
|
+
reportPath,
|
|
30
|
+
openReportOn,
|
|
31
|
+
customReporter
|
|
32
|
+
}) {
|
|
33
|
+
const reporter = [['html', {
|
|
34
|
+
outputFolder: reportPath,
|
|
35
|
+
open: openReportOn
|
|
36
|
+
}], ['list'], ['json', {
|
|
37
|
+
outputFile: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'test-results', 'playwright-test-results.json')
|
|
38
|
+
}], [_path.default.join(SETUP_DIR, 'custom-reporter.js')], [_path.default.join(SETUP_DIR, 'qc-custom-reporter.js')]];
|
|
39
|
+
if (customReporter) {
|
|
40
|
+
return [customReporter, ...reporter];
|
|
41
|
+
}
|
|
42
|
+
return reporter;
|
|
43
|
+
}
|
|
44
|
+
static generate() {
|
|
45
|
+
const userArgs = process.argv.slice(3);
|
|
46
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
47
|
+
const command = playwrightPath;
|
|
48
|
+
const {
|
|
49
|
+
reportPath: htmlPath
|
|
50
|
+
} = (0, _readConfigFile.generateConfigFromFile)();
|
|
51
|
+
const args = ['show-report', htmlPath].concat(userArgs);
|
|
52
|
+
(0, _spawnInheritChild.spawnInheritChild)(command, args, {
|
|
53
|
+
exitOnSuccess: true,
|
|
54
|
+
killOnParentExit: true
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.default = PlaywrightReporter;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _path = _interopRequireDefault(require("path"));
|
|
9
|
+
var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
|
|
10
|
+
// Playwright accepts the shard as `current/total`. Anything else (a bare `--shard`
|
|
11
|
+
// flag, for instance) is not a shard run and must keep the default reporters.
|
|
12
|
+
const SHARD_PATTERN = /^\d+\/\d+$/;
|
|
13
|
+
const REPORTER_TYPES = {
|
|
14
|
+
PLAYWRIGHT: 'playwright',
|
|
15
|
+
SHARD: 'shard'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Base of the report modes. Every mode exposes `getType()` and `getReporter(config)`,
|
|
20
|
+
* `merge()` is implemented by the shard mode alone.
|
|
21
|
+
*/
|
|
22
|
+
class Reporter {
|
|
23
|
+
static get TYPES() {
|
|
24
|
+
return REPORTER_TYPES;
|
|
25
|
+
}
|
|
26
|
+
static isShardedRun(shard) {
|
|
27
|
+
return typeof shard === 'string' && SHARD_PATTERN.test(shard);
|
|
28
|
+
}
|
|
29
|
+
static getBlobReportDir(stage) {
|
|
30
|
+
return _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'blob-report');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Resolves the report mode to use for a run.
|
|
35
|
+
*
|
|
36
|
+
* @returns {string} one of {@link REPORTER_TYPES}
|
|
37
|
+
*/
|
|
38
|
+
static resolveType(shard) {
|
|
39
|
+
return Reporter.isShardedRun(shard) ? REPORTER_TYPES.SHARD : REPORTER_TYPES.PLAYWRIGHT;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Factory of the report modes. The modes are required lazily because they
|
|
44
|
+
* extend this class, a top level import would leave the class undefined.
|
|
45
|
+
*
|
|
46
|
+
* @returns {typeof Reporter}
|
|
47
|
+
*/
|
|
48
|
+
static getReporterClass(type) {
|
|
49
|
+
switch (type) {
|
|
50
|
+
case REPORTER_TYPES.PLAYWRIGHT:
|
|
51
|
+
return require('./PlaywrightReporter').default;
|
|
52
|
+
case REPORTER_TYPES.SHARD:
|
|
53
|
+
return require('./ShardReporter').default;
|
|
54
|
+
default:
|
|
55
|
+
throw new Error(`Unknown reporter type "${type}"`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static getType() {
|
|
59
|
+
throw new Error('getType() has to be implemented by the reporter');
|
|
60
|
+
}
|
|
61
|
+
static merge() {
|
|
62
|
+
throw new Error('merge() is supported by the shard reporter alone');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = Reporter;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _fs = require("fs");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _logger = require("../../../utils/logger");
|
|
11
|
+
var _rootPath = require("../../../utils/rootPath");
|
|
12
|
+
var _ConfigurationHelper = require("../configuration/ConfigurationHelper");
|
|
13
|
+
var _UserArgs = _interopRequireDefault(require("../configuration/UserArgs"));
|
|
14
|
+
var _spawnInheritChild = require("../spawnInheritChild");
|
|
15
|
+
var _Reporter = _interopRequireDefault(require("./Reporter"));
|
|
16
|
+
class ShardReporter extends _Reporter.default {
|
|
17
|
+
static getType() {
|
|
18
|
+
return _Reporter.default.TYPES.SHARD;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A shard only records its results as a blob. The report files are written once
|
|
23
|
+
* by `ZDTestingFramework merge-reports`, so the shards do not overwrite them.
|
|
24
|
+
*
|
|
25
|
+
* @returns {import('@playwright/test').PlaywrightTestConfig['reporter']}
|
|
26
|
+
*/
|
|
27
|
+
static getReporter({
|
|
28
|
+
stage,
|
|
29
|
+
shard
|
|
30
|
+
}) {
|
|
31
|
+
return [['blob', {
|
|
32
|
+
outputDir: _Reporter.default.getBlobReportDir(stage),
|
|
33
|
+
fileName: `report-${shard.replace('/', '-')}.zip`
|
|
34
|
+
}], ['list']];
|
|
35
|
+
}
|
|
36
|
+
static merge() {
|
|
37
|
+
// `merge-reports` is its own CLI command, so nothing has resolved the stage yet.
|
|
38
|
+
// It is resolved once here and exported before the spawn, because the playwright
|
|
39
|
+
// child reads it back through getRunStage() while loading merge-config.js.
|
|
40
|
+
const stage = _UserArgs.default.parseToObject(process.argv.slice(2)).stage || (0, _ConfigurationHelper.getRunStage)();
|
|
41
|
+
process.env.stage = stage;
|
|
42
|
+
const blobReportDir = _Reporter.default.getBlobReportDir(stage);
|
|
43
|
+
if (!(0, _fs.existsSync)(blobReportDir)) {
|
|
44
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `No blob reports found at ${blobReportDir} for stage "${stage}". Run the tests with --shard first (Usage: -- --shard=1/4)`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Merging blob reports from ${blobReportDir}`);
|
|
48
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
49
|
+
const command = playwrightPath;
|
|
50
|
+
const configPath = _path.default.resolve(__dirname, '../', 'setup', 'merge-config.js');
|
|
51
|
+
const args = ['merge-reports', blobReportDir, '--config', require.resolve(configPath)];
|
|
52
|
+
(0, _spawnInheritChild.spawnInheritChild)(command, args, {
|
|
53
|
+
successMessage: 'Blob Reports Merged Successfully',
|
|
54
|
+
exitOnSuccess: true
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.default = ShardReporter;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _child_process = require("child_process");
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _os = require("os");
|
|
11
|
+
var _logger = require("../../../utils/logger");
|
|
12
|
+
var _reporterConstants = _interopRequireDefault(require("../constants/reporterConstants"));
|
|
13
|
+
class UnitReporter {
|
|
14
|
+
static generate() {
|
|
15
|
+
const reportPath = _path.default.resolve(process.cwd(), _reporterConstants.default.DEFAULT_UNIT_TEST_REPORTER_PATH);
|
|
16
|
+
_logger.Logger.log(_logger.Logger.SUCCESS_TYPE, `Opening unit test report: ${reportPath}`);
|
|
17
|
+
const os = (0, _os.platform)();
|
|
18
|
+
const openCommand = os === 'darwin' ? 'open' : os === 'win32' ? 'start' : 'xdg-open';
|
|
19
|
+
(0, _child_process.execFile)(openCommand, [reportPath], error => {
|
|
20
|
+
if (error) {
|
|
21
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to open report: ${error.message}`);
|
|
22
|
+
}
|
|
23
|
+
process.exit();
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = UnitReporter;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = mergeAbortedTestsIntoLastRun;
|
|
8
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _logger = require("../../../../utils/logger");
|
|
11
|
+
var _fileUtils = require("../../../../utils/fileUtils");
|
|
12
|
+
var _reporterConstants = _interopRequireDefault(require("../../constants/reporterConstants"));
|
|
13
|
+
function mergeAbortedTestsIntoLastRun() {
|
|
14
|
+
let resultsFile = _path.default.resolve(process.cwd(), _reporterConstants.default.DEFAULT_REPORTER_PATH),
|
|
15
|
+
lastRunFile = _path.default.resolve(process.cwd(), _reporterConstants.default.LAST_RUN_REPORTER_PATH);
|
|
16
|
+
try {
|
|
17
|
+
let report;
|
|
18
|
+
try {
|
|
19
|
+
report = JSON.parse(_fs.default.readFileSync(resultsFile, 'utf-8'));
|
|
20
|
+
} catch (e) {
|
|
21
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse results file: ${resultsFile}`, e);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const abortedTests = collectAbortedSpecIds(report);
|
|
25
|
+
let lastRunData = {
|
|
26
|
+
status: 'passed',
|
|
27
|
+
failedTests: []
|
|
28
|
+
};
|
|
29
|
+
if (_fs.default.existsSync(lastRunFile)) {
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(_fs.default.readFileSync(lastRunFile, 'utf-8'));
|
|
32
|
+
lastRunData.status = parsed.status || lastRunData.status;
|
|
33
|
+
lastRunData.failedTests = Array.isArray(parsed.failedTests) ? parsed.failedTests : [];
|
|
34
|
+
} catch (e) {
|
|
35
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Failed to parse existing last-run file: ${lastRunFile}`, e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Merge existing failed tests + aborted tests
|
|
40
|
+
const failedSet = new Set(lastRunData.failedTests);
|
|
41
|
+
for (const id of abortedTests) {
|
|
42
|
+
failedSet.add(id);
|
|
43
|
+
}
|
|
44
|
+
lastRunData.failedTests = [...failedSet];
|
|
45
|
+
lastRunData.status = failedSet.size > 0 ? 'failed' : lastRunData.status;
|
|
46
|
+
(0, _fileUtils.writeFileContents)(lastRunFile, JSON.stringify(lastRunData, null, 2));
|
|
47
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Updated ${abortedTests.size} aborted tests in .last-run.json file \n`);
|
|
48
|
+
return lastRunData;
|
|
49
|
+
} catch (err) {
|
|
50
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Error updating .last-run.json: ${err.message}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function collectAbortedSpecIds(report) {
|
|
54
|
+
const aborted = new Set();
|
|
55
|
+
if (!Array.isArray(report.suites)) {
|
|
56
|
+
return aborted;
|
|
57
|
+
}
|
|
58
|
+
const isAbortedSpec = spec => {
|
|
59
|
+
var _spec$tests;
|
|
60
|
+
const tags = Array.isArray(spec.tags) ? spec.tags : [];
|
|
61
|
+
return (_spec$tests = spec.tests) === null || _spec$tests === void 0 ? void 0 : _spec$tests.some(t => !tags.includes('skip') && t.projectName === 'chromium' && t.status === 'skipped');
|
|
62
|
+
};
|
|
63
|
+
const testResultsObj = report.suites;
|
|
64
|
+
while (testResultsObj.length > 0) {
|
|
65
|
+
const suite = testResultsObj.pop();
|
|
66
|
+
if (Array.isArray(suite.specs)) {
|
|
67
|
+
for (const spec of suite.specs) {
|
|
68
|
+
if (spec && isAbortedSpec(spec)) {
|
|
69
|
+
aborted.add(spec.id);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (Array.isArray(suite.suites)) {
|
|
74
|
+
for (const child of suite.suites) testResultsObj.push(child);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return aborted;
|
|
78
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class Runner {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.tagArgs = "";
|
|
6
|
+
this.userArgs = "";
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
setUserArgs(userArgs) {
|
|
10
|
+
this.userArgs = userArgs;
|
|
11
|
+
}
|
|
12
|
+
setTagArgs(tagArgs) {
|
|
13
|
+
this.tagArgs = tagArgs;
|
|
14
|
+
}
|
|
15
|
+
setConfig(config) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
}
|
|
18
|
+
run() {
|
|
19
|
+
throw new Error("Method 'run()' must be implemented.");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
module.exports = Runner;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _RunnerTypes = _interopRequireDefault(require("./RunnerTypes"));
|
|
9
|
+
var _configUtils = require("../setup/config-utils");
|
|
10
|
+
var _cliArgsToObject = require("../../../utils/cliArgsToObject");
|
|
11
|
+
var _browserTypes = require("../constants/browserTypes");
|
|
12
|
+
var _customCommands = require("../custom-commands");
|
|
13
|
+
class RunnerHelper {
|
|
14
|
+
static createRunner(type, runnerObj) {
|
|
15
|
+
const runnerClass = _RunnerTypes.default.getRunnerClass(type, runnerObj);
|
|
16
|
+
if (!runnerClass) {
|
|
17
|
+
throw new Error("Invalid runner type");
|
|
18
|
+
}
|
|
19
|
+
return runnerClass;
|
|
20
|
+
}
|
|
21
|
+
static getPlaywrightArgs(userArgsObject, debug, bddMode, tagArgs, headless) {
|
|
22
|
+
const {
|
|
23
|
+
browsers = null
|
|
24
|
+
} = userArgsObject;
|
|
25
|
+
let browserList = (0, _configUtils.getBrowsersList)(browsers);
|
|
26
|
+
const playwrightArgs = (0, _cliArgsToObject.objectToCliArgs)(userArgsObject, key => !_customCommands.CUSTOM_COMMANDS.includes(key));
|
|
27
|
+
if (debug) {
|
|
28
|
+
playwrightArgs.push('--debug');
|
|
29
|
+
}
|
|
30
|
+
if (!bddMode && tagArgs) {
|
|
31
|
+
playwrightArgs.push('--grep');
|
|
32
|
+
playwrightArgs.push(tagArgs);
|
|
33
|
+
}
|
|
34
|
+
if (!headless && !userArgsObject.headed) {
|
|
35
|
+
playwrightArgs.push('--headed');
|
|
36
|
+
}
|
|
37
|
+
if (browserList && browserList.length > 0) {
|
|
38
|
+
browserList.map(browser => playwrightArgs.push(`--project=${_browserTypes.BROWSER_PROJECT_MAPPING[browser.toUpperCase()]}`));
|
|
39
|
+
}
|
|
40
|
+
return playwrightArgs;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
var _default = exports.default = RunnerHelper;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _SpawnRunner = _interopRequireDefault(require("./SpawnRunner"));
|
|
5
|
+
class RunnerTypes {
|
|
6
|
+
static getRunnerClass(type, runnerObj) {
|
|
7
|
+
const RunnerClass = this.runnerTypes[type];
|
|
8
|
+
if (!RunnerClass) {
|
|
9
|
+
throw new Error("Invalid runner type");
|
|
10
|
+
}
|
|
11
|
+
return new RunnerClass(runnerObj);
|
|
12
|
+
}
|
|
13
|
+
static runnerTypes = {
|
|
14
|
+
spawn: _SpawnRunner.default //require("./SpawnRunner"), // used lazy loading to reduce circular dependencies
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
module.exports = RunnerTypes;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _readConfigFile = require("../readConfigFile");
|
|
5
|
+
var _rootPath = require("../../../utils/rootPath");
|
|
6
|
+
var _path = _interopRequireDefault(require("path"));
|
|
7
|
+
var _logger = require("../../../utils/logger");
|
|
8
|
+
var _spawnInheritChild = require("../spawnInheritChild");
|
|
9
|
+
var _RunnerHelper = _interopRequireDefault(require("./RunnerHelper"));
|
|
10
|
+
var _Runner = _interopRequireDefault(require("./Runner"));
|
|
11
|
+
var _commonUtils = require("../../../utils/commonUtils");
|
|
12
|
+
var _retryConstants = require("../../playwright/constants/retryConstants");
|
|
13
|
+
class SpawnRunner extends _Runner.default {
|
|
14
|
+
constructor(runnerObj) {
|
|
15
|
+
super(runnerObj);
|
|
16
|
+
this.runnerObj = runnerObj;
|
|
17
|
+
}
|
|
18
|
+
run() {
|
|
19
|
+
const {
|
|
20
|
+
config
|
|
21
|
+
} = this.runnerObj;
|
|
22
|
+
let promises = [];
|
|
23
|
+
const {
|
|
24
|
+
bddMode
|
|
25
|
+
} = config.getAll();
|
|
26
|
+
if (bddMode) {
|
|
27
|
+
promises.push(this.runPreprocessingWithRetry());
|
|
28
|
+
}
|
|
29
|
+
Promise.all(promises).then(() => this.runPlaywright()).catch(err => {
|
|
30
|
+
_logger.Logger.error(err);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// This below Retry wrapper function for preprocessing the feature files Missing Step Definitions Issue
|
|
36
|
+
|
|
37
|
+
async runPreprocessingWithRetry(maxRetries = _retryConstants.PREPROCESSING_RETRY_MAX_ATTEMPTS, delayMs = _retryConstants.PREPROCESSING_RETRY_DELAY_MS) {
|
|
38
|
+
for (let attempt = 1; attempt <= maxRetries + 1; attempt++) {
|
|
39
|
+
try {
|
|
40
|
+
await this.runPreprocessing();
|
|
41
|
+
return;
|
|
42
|
+
} catch (err) {
|
|
43
|
+
if (attempt > maxRetries) {
|
|
44
|
+
_logger.Logger.log(_logger.Logger.FAILURE_TYPE, `Preprocessing failed after ${attempt} attempts`);
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
_logger.Logger.log(_logger.Logger.INFO_TYPE, `Preprocessing failed (attempt ${attempt} of ${maxRetries + 1}). Retrying in ${delayMs}ms...`);
|
|
48
|
+
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
runPreprocessing() {
|
|
53
|
+
//This below functoin is called to copy the data generator spec files to the current project
|
|
54
|
+
(0, _commonUtils.copyCommonSpecs)();
|
|
55
|
+
const {
|
|
56
|
+
tagArgs
|
|
57
|
+
} = this.runnerObj;
|
|
58
|
+
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? _path.default.resolve(__dirname, '../', 'setup', 'config-creator.js') : _path.default.resolve(__dirname, '../', '../', '../', '../', 'playwrightConfig.js');
|
|
59
|
+
const beforeCommand = 'node';
|
|
60
|
+
const bddGenPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('bddgen'));
|
|
61
|
+
const beforeArgs = [bddGenPath, '-c', require.resolve(configPath)];
|
|
62
|
+
if (tagArgs) {
|
|
63
|
+
beforeArgs.push('--tags');
|
|
64
|
+
beforeArgs.push(tagArgs);
|
|
65
|
+
}
|
|
66
|
+
return (0, _spawnInheritChild.spawnInheritChild)(beforeCommand, beforeArgs, {
|
|
67
|
+
successMessage: 'Feature Files Processed Successfully',
|
|
68
|
+
failureMessage: code => `BddGen exited with code ${code}`
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
runPlaywright() {
|
|
72
|
+
const {
|
|
73
|
+
tagArgs,
|
|
74
|
+
config,
|
|
75
|
+
userArgs
|
|
76
|
+
} = this.runnerObj;
|
|
77
|
+
const {
|
|
78
|
+
debug,
|
|
79
|
+
bddMode = false,
|
|
80
|
+
headless = false
|
|
81
|
+
} = config.getAll();
|
|
82
|
+
const playwrightArgs = _RunnerHelper.default.getPlaywrightArgs(userArgs, debug, bddMode, tagArgs, headless);
|
|
83
|
+
const playwrightPath = _path.default.resolve((0, _rootPath.getExecutableBinaryPath)('playwright'));
|
|
84
|
+
const command = playwrightPath;
|
|
85
|
+
const configPath = (0, _readConfigFile.isUserConfigFileAvailable)() ? _path.default.resolve(__dirname, '../', 'setup', 'config-creator.js') : _path.default.resolve('../', '../', '../', '../', 'playwrightConfig.js');
|
|
86
|
+
const args = ['test', '--config', require.resolve(configPath)].concat(playwrightArgs);
|
|
87
|
+
return (0, _spawnInheritChild.spawnInheritChild)(command, args, {
|
|
88
|
+
successMessage: 'Test Ran Successfully',
|
|
89
|
+
killOnParentExit: true
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
module.exports = SpawnRunner;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
class Project {
|
|
4
|
+
constructor(name) {
|
|
5
|
+
this.properties = {};
|
|
6
|
+
this.properties.name = name;
|
|
7
|
+
}
|
|
8
|
+
setTestDir(value) {
|
|
9
|
+
this.properties.testDir = value;
|
|
10
|
+
}
|
|
11
|
+
setTestMatch(value) {
|
|
12
|
+
this.properties.testMatch = value;
|
|
13
|
+
}
|
|
14
|
+
setRetries(value) {
|
|
15
|
+
this.properties.retries = value;
|
|
16
|
+
}
|
|
17
|
+
setUse(value) {
|
|
18
|
+
this.properties.use = value;
|
|
19
|
+
}
|
|
20
|
+
setTearDown(value) {
|
|
21
|
+
this.properties.teardown = value;
|
|
22
|
+
}
|
|
23
|
+
setDependencies(value) {
|
|
24
|
+
this.properties.dependencies = value;
|
|
25
|
+
}
|
|
26
|
+
setProperty(key, value) {
|
|
27
|
+
this.properties[key] = value;
|
|
28
|
+
}
|
|
29
|
+
getProperties() {
|
|
30
|
+
return this.properties;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
module.exports = {
|
|
34
|
+
Project
|
|
35
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.cleanupConfig = cleanupConfig;
|
|
8
|
+
exports.setupConfig = setupConfig;
|
|
9
|
+
exports.smokeTestConfig = smokeTestConfig;
|
|
10
|
+
var _path = _interopRequireDefault(require("path"));
|
|
11
|
+
var _Project = require("./Project");
|
|
12
|
+
var _configUtils = require("./config-utils");
|
|
13
|
+
var _readConfigFile = require("../readConfigFile");
|
|
14
|
+
var _configConstants = _interopRequireDefault(require("../constants/configConstants"));
|
|
15
|
+
var _ConfigurationHelper = require("../configuration/ConfigurationHelper");
|
|
16
|
+
const stage = (0, _ConfigurationHelper.getRunStage)();
|
|
17
|
+
const uatConfig = (0, _readConfigFile.generateConfigFromFile)();
|
|
18
|
+
const {
|
|
19
|
+
isAuthMode,
|
|
20
|
+
isSmokeTest,
|
|
21
|
+
bddMode,
|
|
22
|
+
authFilePath,
|
|
23
|
+
trace,
|
|
24
|
+
smokeTestTrace,
|
|
25
|
+
video,
|
|
26
|
+
testIdAttribute,
|
|
27
|
+
viewport,
|
|
28
|
+
stepDefinitionsFolder
|
|
29
|
+
} = uatConfig;
|
|
30
|
+
function setupConfig() {
|
|
31
|
+
const setupProject = new _Project.Project('setup');
|
|
32
|
+
setupProject.setTestMatch(/.*\.setup\.js/);
|
|
33
|
+
setupProject.setTestDir(_path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER));
|
|
34
|
+
const isTearDown = JSON.parse(process.env.tearDown);
|
|
35
|
+
setupProject.setTearDown(isTearDown ? 'cleanup' : '');
|
|
36
|
+
const setupProjectConfig = [setupProject.getProperties()];
|
|
37
|
+
return setupProjectConfig;
|
|
38
|
+
}
|
|
39
|
+
function smokeTestConfig() {
|
|
40
|
+
const smokeTestProject = new _Project.Project('smokeTest');
|
|
41
|
+
const smokeTestDir = (0, _configUtils.getTestDir)(bddMode, {
|
|
42
|
+
featureFilesFolder: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'smokeTest', '**', '*.feature'),
|
|
43
|
+
stepDefinitionsFolder: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, '**', '**', stepDefinitionsFolder, '*.spec.js'),
|
|
44
|
+
outputDir: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, _configConstants.default.FEATURES_SMOKE_GEN_DIR),
|
|
45
|
+
uatPath: _path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER, stage, 'smokeTest')
|
|
46
|
+
});
|
|
47
|
+
const commonConfig = {
|
|
48
|
+
storageState: isAuthMode ? (0, _readConfigFile.getAuthFilePath)(_path.default.resolve(process.cwd(), authFilePath)) : {},
|
|
49
|
+
trace: smokeTestTrace
|
|
50
|
+
};
|
|
51
|
+
smokeTestProject.setTestDir(smokeTestDir);
|
|
52
|
+
smokeTestProject.setRetries(0);
|
|
53
|
+
smokeTestProject.setUse({
|
|
54
|
+
...commonConfig
|
|
55
|
+
});
|
|
56
|
+
smokeTestProject.setDependencies(isAuthMode ? ['setup'] : []);
|
|
57
|
+
const smokeTestProjectConfig = [smokeTestProject.getProperties()];
|
|
58
|
+
return smokeTestProjectConfig;
|
|
59
|
+
}
|
|
60
|
+
function cleanupConfig() {
|
|
61
|
+
const cleanupProject = new _Project.Project('cleanup');
|
|
62
|
+
cleanupProject.setTestMatch(/.*\.teardown\.js/);
|
|
63
|
+
cleanupProject.setTestDir(_path.default.join(process.cwd(), _configConstants.default.TEST_SLICE_FOLDER));
|
|
64
|
+
const cleanupProjectConfig = [cleanupProject.getProperties()];
|
|
65
|
+
return cleanupProjectConfig;
|
|
66
|
+
}
|