@gooddata/sdk-e2e-utils 11.63.1 → 11.64.0-alpha.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/esm/create-test/feature-hub/mock.d.ts +2 -9
- package/esm/create-test/feature-hub/mock.d.ts.map +1 -1
- package/esm/create-test/feature-hub/mock.js +6 -1
- package/esm/create-test/goodmock/playwright.d.ts +3 -3
- package/esm/create-test/goodmock/playwright.d.ts.map +1 -1
- package/esm/create-test/playwright/factory.js +4 -4
- package/esm/create-test/playwright/types.d.ts +3 -3
- package/esm/create-test/playwright/types.d.ts.map +1 -1
- package/esm/create-test/playwright/with-describe-details.d.ts +2 -2
- package/esm/create-test/playwright/with-describe-details.d.ts.map +1 -1
- package/esm/create-test/playwright/with-describe-details.js +13 -3
- package/esm/sdk-e2e-utils.d.ts +3 -3
- package/package.json +3 -3
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import type { Page } from "@playwright/test";
|
|
2
|
+
import type { PlaywrightTestInstance } from "../playwright/playwright-types.js";
|
|
2
3
|
import type { IFeatureHubEnvironment, IFeatureHubFeature } from "./types.js";
|
|
3
4
|
export declare function makeFeatureHubResponse(features: IFeatureHubFeature[]): IFeatureHubEnvironment[];
|
|
4
|
-
|
|
5
|
-
* FeatureHub mock — each test gets a fresh page, so route dies with it.
|
|
6
|
-
*
|
|
7
|
-
* The app reads FeatureHub once, on first load, so the mock must be in place before the page navigates
|
|
8
|
-
* anywhere. Registering it afterwards (e.g. `featureFlags` on an inner describe/test while an outer
|
|
9
|
-
* describe's `beforeEach` already called `page.goto`) would leave the app running on the previous
|
|
10
|
-
* features, which fails in confusing ways. Fail fast instead.
|
|
11
|
-
*/
|
|
12
|
-
export declare function registerFeatureHubMock(page: Page, features: IFeatureHubFeature[]): Promise<void>;
|
|
5
|
+
export declare function initialRegisterFeatureHubMock(testInstance: PlaywrightTestInstance, features: IFeatureHubFeature[]): void;
|
|
13
6
|
/** Remove the FeatureHub mock registered by {@link registerFeatureHubMock}. */
|
|
14
7
|
export declare function unregisterFeatureHubMock(page: Page): Promise<void>;
|
|
15
8
|
/** Replace the current FeatureHub mock with one serving `featureHubResponse`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/create-test/feature-hub/mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAI7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,sBAAsB,EAAE,CAO/F;
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/create-test/feature-hub/mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAI7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,sBAAsB,EAAE,CAO/F;AA+BD,wBAAgB,6BAA6B,CACzC,YAAY,EAAE,sBAAsB,EACpC,QAAQ,EAAE,kBAAkB,EAAE,QAKjC;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,iBAExD;AAED,iFAAiF;AACjF,wBAAsB,wBAAwB,CAC1C,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,kBAAkB,EAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
|
@@ -16,7 +16,7 @@ export function makeFeatureHubResponse(features) {
|
|
|
16
16
|
* describe's `beforeEach` already called `page.goto`) would leave the app running on the previous
|
|
17
17
|
* features, which fails in confusing ways. Fail fast instead.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
async function registerFeatureHubMock(page, features) {
|
|
20
20
|
if (page.url() !== "about:blank") {
|
|
21
21
|
throw new Error(`@gooddata/sdk-e2e-utils: FeatureHub mock registered after the page navigated to "${page.url()}". ` +
|
|
22
22
|
"Features are read on first load, so the mock has no effect now. Register `featureFlags` " +
|
|
@@ -32,6 +32,11 @@ export async function registerFeatureHubMock(page, features) {
|
|
|
32
32
|
});
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
|
+
export function initialRegisterFeatureHubMock(testInstance, features) {
|
|
36
|
+
testInstance.beforeEach(async ({ page }) => {
|
|
37
|
+
await registerFeatureHubMock(page, features);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
35
40
|
/** Remove the FeatureHub mock registered by {@link registerFeatureHubMock}. */
|
|
36
41
|
export async function unregisterFeatureHubMock(page) {
|
|
37
42
|
await page.unroute(FEATURE_HUB_ROUTE);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { PlaywrightTestInstance } from "../playwright/playwright-types.js";
|
|
2
|
+
import type { IGoodmockOptions } from "./types.js";
|
|
3
3
|
/** Goodmock lifecycle hooks */
|
|
4
|
-
export declare function registerGoodmockHooks(testInstance:
|
|
4
|
+
export declare function registerGoodmockHooks(testInstance: PlaywrightTestInstance, gm: IGoodmockOptions, specName: string): void;
|
|
5
5
|
//# sourceMappingURL=playwright.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/create-test/goodmock/playwright.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"playwright.d.ts","sourceRoot":"","sources":["../../../src/create-test/goodmock/playwright.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAKhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,sBAAsB,EACpC,EAAE,EAAE,gBAAgB,EACpB,QAAQ,EAAE,MAAM,GACjB,IAAI,CAiCN"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// oxlint-disable typescript-eslint/no-empty-object-type
|
|
3
3
|
import { basename } from "path";
|
|
4
4
|
import { test } from "@playwright/test";
|
|
5
|
-
import {
|
|
5
|
+
import { initialRegisterFeatureHubMock } from "../feature-hub/mock.js";
|
|
6
6
|
import { registerGoodmockHooks } from "../goodmock/playwright.js";
|
|
7
7
|
import { getCallerLocation, getPlaywrightInternals, } from "./playwright-internals.js";
|
|
8
8
|
import { assertRequiredConditions, assertValidConditions, combineConditions, shouldRunTest, } from "./test-conditions.js";
|
|
@@ -70,9 +70,9 @@ export function createTest(options) {
|
|
|
70
70
|
}
|
|
71
71
|
specNameFiles.set(specName, location.file);
|
|
72
72
|
internals.describe(type, location, title, pwDetails, () => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
73
|
+
if (options.featureHubFeatures) {
|
|
74
|
+
initialRegisterFeatureHubMock(testInstance, options.featureHubFeatures);
|
|
75
|
+
}
|
|
76
76
|
if (options.goodmock) {
|
|
77
77
|
registerGoodmockHooks(testInstance, options.goodmock, specName);
|
|
78
78
|
}
|
|
@@ -79,9 +79,9 @@ export interface ITestConditions<TestConditionsValue extends TestConditionsValue
|
|
|
79
79
|
* @internal
|
|
80
80
|
*/
|
|
81
81
|
export interface ICustomCreateTestOptions<TestConditionsValue extends TestConditionsValueConstraint = never> {
|
|
82
|
-
featureHubFeatures
|
|
83
|
-
goodmock?: IGoodmockOptions;
|
|
84
|
-
testConditions?: ITestConditions<TestConditionsValue
|
|
82
|
+
featureHubFeatures?: IFeatureHubFeature[] | undefined;
|
|
83
|
+
goodmock?: IGoodmockOptions | undefined;
|
|
84
|
+
testConditions?: ITestConditions<TestConditionsValue> | undefined;
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* @internal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/create-test/playwright/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EACR,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EACrB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC;;;;GAIG;AACH,MAAM,WAAW,iBAAiB,CAAC,mBAAmB,SAAS,6BAA6B,GAAG,KAAK;IAChG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CACzF;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAClC,mBAAmB,SAAS,6BAA6B,GAAG,KAAK,CACnE,SAAQ,iBAAiB,CAAC,mBAAmB,CAAC;IAC5C,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CACtB,mBAAmB,SAAS,6BAA6B,GAAG,KAAK,CACnE,SAAQ,iBAAiB,CAAC,mBAAmB,CAAC;IAC5C,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC7C,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC7C,SAAS,EAAE,2BAA2B,CAAC;IACvC,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC9C,MAAM,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IACnD,QAAQ,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CACxD;AAED;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,mBAAmB,SAAS,6BAA6B;IACtF;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC;IACzF;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EAAE,KAAK,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;IACrG;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,mBAAmB,SAAS,6BAA6B,GAAG,KAAK;IACvG,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/create-test/playwright/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import type { IPlaywrightLocation } from "./playwright-internals.js";
|
|
|
3
3
|
import type { PlaywrightTestInstance } from "./playwright-types.js";
|
|
4
4
|
import type { Callback, FeatureFlags, ITestDetails, TestConditionsValueConstraint, WindowProperties } from "./types.js";
|
|
5
5
|
/** Push merged awp/flags onto stacks, register the beforeEach hooks, call fn, pop. */
|
|
6
|
-
export declare function withDescribeDetails(testInstance: PlaywrightTestInstance, defaultFeatures: IFeatureHubFeature[], awpStack: WindowProperties[], flagsStack: FeatureFlags[], details: ITestDetails<TestConditionsValueConstraint> | undefined, fn: Callback): void;
|
|
6
|
+
export declare function withDescribeDetails(testInstance: PlaywrightTestInstance, defaultFeatures: IFeatureHubFeature[] | undefined, awpStack: WindowProperties[], flagsStack: FeatureFlags[], details: ITestDetails<TestConditionsValueConstraint> | undefined, fn: Callback): void;
|
|
7
7
|
/**
|
|
8
8
|
* Register a single test's own awp/flags, merged on top of the enclosing describes'.
|
|
9
9
|
* The beforeEach is registered next to the test, after the enclosing describes' injection hooks,
|
|
10
10
|
* so it runs last and its values win.
|
|
11
11
|
*/
|
|
12
|
-
export declare function withTestDetails(testInstance: PlaywrightTestInstance, defaultFeatures: IFeatureHubFeature[], awpStack: WindowProperties[], flagsStack: FeatureFlags[], location: IPlaywrightLocation, title: string, details: ITestDetails<TestConditionsValueConstraint> | undefined): void;
|
|
12
|
+
export declare function withTestDetails(testInstance: PlaywrightTestInstance, defaultFeatures: IFeatureHubFeature[] | undefined, awpStack: WindowProperties[], flagsStack: FeatureFlags[], location: IPlaywrightLocation, title: string, details: ITestDetails<TestConditionsValueConstraint> | undefined): void;
|
|
13
13
|
//# sourceMappingURL=with-describe-details.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-describe-details.d.ts","sourceRoot":"","sources":["../../../src/create-test/playwright/with-describe-details.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAC7B,gBAAgB,EACnB,MAAM,YAAY,CAAC;AAMpB,sFAAsF;AACtF,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,sBAAsB,EACpC,eAAe,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"with-describe-details.d.ts","sourceRoot":"","sources":["../../../src/create-test/playwright/with-describe-details.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAC7B,gBAAgB,EACnB,MAAM,YAAY,CAAC;AAMpB,sFAAsF;AACtF,wBAAgB,mBAAmB,CAC/B,YAAY,EAAE,sBAAsB,EACpC,eAAe,EAAE,kBAAkB,EAAE,GAAG,SAAS,EACjD,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,UAAU,EAAE,YAAY,EAAE,EAC1B,OAAO,EAAE,YAAY,CAAC,6BAA6B,CAAC,GAAG,SAAS,EAChE,EAAE,EAAE,QAAQ,QA2Bf;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC3B,YAAY,EAAE,sBAAsB,EACpC,eAAe,EAAE,kBAAkB,EAAE,GAAG,SAAS,EACjD,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,UAAU,EAAE,YAAY,EAAE,EAC1B,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,CAAC,6BAA6B,CAAC,GAAG,SAAS,GACjE,IAAI,CA4BN"}
|
|
@@ -23,7 +23,7 @@ export function withDescribeDetails(testInstance, defaultFeatures, awpStack, fla
|
|
|
23
23
|
injectWindowProperties(testInstance, mergedAwp);
|
|
24
24
|
}
|
|
25
25
|
if (ff) {
|
|
26
|
-
injectFeatureFlags(testInstance, defaultFeatures, mergedFlags);
|
|
26
|
+
injectFeatureFlags(testInstance, requireDefaultFeatures(defaultFeatures, "a describe"), mergedFlags);
|
|
27
27
|
}
|
|
28
28
|
try {
|
|
29
29
|
fn();
|
|
@@ -49,6 +49,7 @@ export function withTestDetails(testInstance, defaultFeatures, awpStack, flagsSt
|
|
|
49
49
|
}
|
|
50
50
|
const mergedAwp = awp ? { ...peekOrEmpty(awpStack), ...awp } : peekOrEmpty(awpStack);
|
|
51
51
|
const mergedFlags = ff ? { ...peekOrEmpty(flagsStack), ...ff } : peekOrEmpty(flagsStack);
|
|
52
|
+
const features = ff ? requireDefaultFeatures(defaultFeatures, `test("${title}")`) : undefined;
|
|
52
53
|
testInstance.beforeEach(async ({ page }, testInfo) => {
|
|
53
54
|
// A beforeEach applies to every test in its describe; only act for this test. Title is part
|
|
54
55
|
// of the match because tests generated in a loop share one location.
|
|
@@ -61,11 +62,20 @@ export function withTestDetails(testInstance, defaultFeatures, awpStack, flagsSt
|
|
|
61
62
|
if (awp) {
|
|
62
63
|
await addWindowPropertiesInitScript(page, mergedAwp);
|
|
63
64
|
}
|
|
64
|
-
if (
|
|
65
|
-
await applyFeatureFlags(page,
|
|
65
|
+
if (features) {
|
|
66
|
+
await applyFeatureFlags(page, features, mergedFlags);
|
|
66
67
|
}
|
|
67
68
|
});
|
|
68
69
|
}
|
|
70
|
+
/** `featureFlags` are served on top of the FeatureHub mock, so they need `featureHubFeatures` to merge onto. */
|
|
71
|
+
function requireDefaultFeatures(defaultFeatures, where) {
|
|
72
|
+
if (!defaultFeatures) {
|
|
73
|
+
throw new Error(`@gooddata/sdk-e2e-utils: ${where} sets \`featureFlags\`, but this createTest() has no ` +
|
|
74
|
+
"`featureHubFeatures`. Flags are served on top of the FeatureHub mock, so pass " +
|
|
75
|
+
"`featureHubFeatures` to createTest() or drop `featureFlags` here.");
|
|
76
|
+
}
|
|
77
|
+
return defaultFeatures;
|
|
78
|
+
}
|
|
69
79
|
/** Inject additional window properties via a single addInitScript. */
|
|
70
80
|
function injectWindowProperties(testInst, awp) {
|
|
71
81
|
testInst.beforeEach(async ({ page }) => {
|
package/esm/sdk-e2e-utils.d.ts
CHANGED
|
@@ -142,9 +142,9 @@ export declare type ICreateTestOptions<TestConditionsValue extends TestCondition
|
|
|
142
142
|
* @internal
|
|
143
143
|
*/
|
|
144
144
|
export declare interface ICustomCreateTestOptions<TestConditionsValue extends TestConditionsValueConstraint = never> {
|
|
145
|
-
featureHubFeatures
|
|
146
|
-
goodmock?: IGoodmockOptions;
|
|
147
|
-
testConditions?: ITestConditions<TestConditionsValue
|
|
145
|
+
featureHubFeatures?: IFeatureHubFeature[] | undefined;
|
|
146
|
+
goodmock?: IGoodmockOptions | undefined;
|
|
147
|
+
testConditions?: ITestConditions<TestConditionsValue> | undefined;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-e2e-utils",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.64.0-alpha.1",
|
|
4
4
|
"description": "GoodData utility functions for Playwright E2E tests",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"oxlint-plugin-eslint": "1.82.0",
|
|
51
51
|
"oxlint-tsgolint": "7.0.2001",
|
|
52
52
|
"typescript": "7.0.2",
|
|
53
|
-
"@gooddata/eslint-config": "11.
|
|
54
|
-
"@gooddata/oxlint-config": "11.
|
|
53
|
+
"@gooddata/eslint-config": "11.64.0-alpha.1",
|
|
54
|
+
"@gooddata/oxlint-config": "11.64.0-alpha.1"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"_phase:build": "npm run build",
|