@gooddata/sdk-e2e-utils 11.64.0-alpha.0 → 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.
@@ -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;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBtG;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED,iFAAiF;AACjF,wBAAsB,wBAAwB,CAC1C,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,kBAAkB,EAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAGf"}
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
- export async function registerFeatureHubMock(page, features) {
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 { type test } from "@playwright/test";
2
- import { type IGoodmockOptions } from "./types.js";
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: typeof test, gm: IGoodmockOptions, specName: string): void;
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,KAAK,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,+BAA+B;AAC/B,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,OAAO,IAAI,EACzB,EAAE,EAAE,gBAAgB,EACpB,QAAQ,EAAE,MAAM,GACjB,IAAI,CAiCN"}
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 { registerFeatureHubMock } from "../feature-hub/mock.js";
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
- testInstance.beforeEach(async ({ page }) => {
74
- await registerFeatureHubMock(page, options.featureHubFeatures);
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: IFeatureHubFeature[];
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;IACzC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,cAAc,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;CACzD;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAC1B,mBAAmB,SAAS,6BAA6B,GAAG,KAAK,EACjE,CAAC,SAAS,EAAE,GAAG,EAAE,EACjB,CAAC,SAAS,EAAE,GAAG,EAAE,IACjB,wBAAwB,CAAC,mBAAmB,CAAC,GAAG;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,GAAG,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG;IAAE,cAAc,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAA;CAAE,CAAC,CAAC;AAE5G;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,MAAM,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,YAAY,CACzB,mBAAmB,SAAS,6BAA6B,GAAG,KAAK,CACnE,SAAQ,WAAW;IACjB,0BAA0B,CAAC,EAAE,gBAAgB,CAAC;IAC9C,sGAAsG;IACtG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mCAAmC;IACnC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa,CAC1B,mBAAmB,SAAS,6BAA6B,EACzD,QAAQ,SAAS,EAAE,EACnB,UAAU,SAAS,EAAE;IAErB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC;IACvE,CACI,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,CAAC,mBAAmB,CAAC,EAC1C,IAAI,EAAE,kBAAkB,CAAC,QAAQ,GAAG,UAAU,CAAC,GAChD,IAAI,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB,CAClC,mBAAmB,SAAS,6BAA6B,EACzD,QAAQ,SAAS,EAAE,EACnB,UAAU,SAAS,EAAE,CACvB,SAAQ,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC9D,IAAI,IAAI,CAAC;IACT,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,CAAC,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1F;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAC9B,mBAAmB,SAAS,6BAA6B,EACzD,QAAQ,SAAS,EAAE,EACnB,UAAU,SAAS,EAAE,CACvB,SAAQ,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC;IACtE,IAAI,EAAE,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,MAAM,MAAM,IAAI,CACZ,mBAAmB,SAAS,6BAA6B,EACzD,QAAQ,SAAS,EAAE,EACnB,UAAU,SAAS,EAAE,IACrB,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,GACxD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC,GAAG;IAC9F,IAAI,EAAE,aAAa,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvE,KAAK,EAAE,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,EAAE,iBAAiB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnE,QAAQ,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;CAC5C,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,EACrC,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,EACrC,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,CA2BN"}
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 (ff) {
65
- await applyFeatureFlags(page, defaultFeatures, mergedFlags);
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 }) => {
@@ -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: IFeatureHubFeature[];
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.64.0-alpha.0",
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.64.0-alpha.0",
54
- "@gooddata/oxlint-config": "11.64.0-alpha.0"
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",