Skip to content

Commit 1e5c631

Browse files
committed
fixup: reduce code duplications
Signed-off-by: Simon Schrottner <[email protected]>
1 parent 5e5eac9 commit 1e5c631

File tree

15 files changed

+46
-44
lines changed

15 files changed

+46
-44
lines changed

Diff for: libs/providers/flagd-web/src/e2e/constants.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
1-
export const FLAGD_NAME = 'flagd-web';
2-
export const E2E_CLIENT_NAME = 'e2e';
3-
4-
export const IMAGE_VERSION = 'v0.5.13';
1+
import { getGherkinTestPath } from '@openfeature/flagd-core';
52

6-
export function getGherkinTestPath(file: string, modulePath = 'test-harness/gherkin/'): string {
7-
// TODO: find a way to resolve this in a generic manner - currently this works, because of the file structure
8-
return `<rootdir>/../../../../../shared/flagd-core/${modulePath}${file}`;
9-
}
3+
export const FLAGD_NAME = 'flagd-web';
104

11-
export const GHERKIN_EVALUATION_FEATURE = getGherkinTestPath(
12-
'flagd.feature'
13-
);
5+
export const GHERKIN_EVALUATION_FEATURE = getGherkinTestPath('flagd.feature');

Diff for: libs/providers/flagd-web/src/e2e/step-definitions/flag.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
ProviderEvents,
99
StandardResolutionReasons,
1010
} from '@openfeature/web-sdk';
11-
import { E2E_CLIENT_NAME } from '../constants';
11+
import { E2E_CLIENT_NAME } from '@openfeature/flagd-core';
1212

1313
export const flagStepDefinitions: StepDefinitions = ({ given, and, when, then }) => {
1414
let flagKey: string;
@@ -286,8 +286,8 @@ export const flagStepDefinitions: StepDefinitions = ({ given, and, when, then })
286286
await new Promise((resolve) => setTimeout(resolve, 3000));
287287
});
288288

289-
then('the PROVIDER_CONFIGURATION_CHANGED handler must run', () => {
290-
expect(ran).toBeTruthy();
289+
then('the PROVIDER_CONFIGURATION_CHANGED handler must run', async () => {
290+
expect(await ran).toBeTruthy();
291291
});
292292

293293
and(/^the event details must indicate "(.*)" was altered$/, (flagName) => {

Diff for: libs/providers/flagd-web/src/e2e/tests/provider.spec.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import { OpenFeature } from '@openfeature/web-sdk';
33
import { GenericContainer, StartedTestContainer } from 'testcontainers';
44
import { FlagdWebProvider } from '../../lib/flagd-web-provider';
55
import { autoBindSteps, loadFeature } from 'jest-cucumber';
6-
import { E2E_CLIENT_NAME, FLAGD_NAME, GHERKIN_EVALUATION_FEATURE, IMAGE_VERSION } from '../constants';
6+
import { FLAGD_NAME, GHERKIN_EVALUATION_FEATURE } from '../constants';
77
import { flagStepDefinitions } from '../step-definitions';
8+
import { E2E_CLIENT_NAME, IMAGE_VERSION } from '@openfeature/flagd-core';
89

910
// register the flagd provider before the tests.
1011
async function setup() {
@@ -22,10 +23,7 @@ async function setup() {
2223
tls: false,
2324
maxRetries: -1,
2425
});
25-
await OpenFeature.setProviderAndWait(
26-
E2E_CLIENT_NAME,
27-
flagdWebProvider,
28-
);
26+
await OpenFeature.setProviderAndWait(E2E_CLIENT_NAME, flagdWebProvider);
2927
assert(
3028
OpenFeature.getProviderMetadata(E2E_CLIENT_NAME).name === FLAGD_NAME,
3129
new Error(

Diff for: libs/providers/flagd-web/src/e2e/tsconfig.lib.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4-
"lib": ["ES2015", "DOM"],
4+
"lib": ["ES2022", "DOM"],
55
"outDir": "../../../dist/out-tsc",
66
"declaration": true,
77
"types": ["jest"],
88
"allowSyntheticDefaultImports": true,
9+
"allowJs" :true,
10+
"resolveJsonModule": true
911
}
1012
}

Diff for: libs/providers/flagd/src/e2e/constants.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1+
import { getGherkinTestPath } from '@openfeature/flagd-core';
2+
13
export const FLAGD_NAME = 'flagd Provider';
2-
export const E2E_CLIENT_NAME = 'e2e';
34
export const UNSTABLE_CLIENT_NAME = 'unstable';
45
export const UNAVAILABLE_CLIENT_NAME = 'unavailable';
56

6-
export const IMAGE_VERSION = 'v0.5.6';
7-
8-
export function getGherkinTestPath(file: string, modulePath = 'test-harness/gherkin/'): string {
9-
// TODO: find a way to resolve this in a generic manner - currently this works, because of the file structure
10-
return `<rootdir>/../../../../../shared/flagd-core/${modulePath}${file}`;
11-
}
12-
137
export const GHERKIN_FLAGD_FEATURE = getGherkinTestPath('flagd.feature');
148
export const GHERKIN_FLAGD_JSON_EVALUATOR_FEATURE = getGherkinTestPath('flagd-json-evaluator.feature');
159
export const GHERKIN_FLAGD_RECONNECT_FEATURE = getGherkinTestPath('flagd-reconnect.feature');

Diff for: libs/providers/flagd/src/e2e/step-definitions/reconnect.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ export const reconnectStepDefinitions: StepDefinitions = ({ given, and, when, th
1212
let readyRunCount = 0;
1313
let errorHandlerRun = 0;
1414

15+
const retryDelayMs = 1000;
16+
1517
beforeAll((done) => {
1618
client.addHandler(ProviderEvents.Ready, () => {
1719
done();
@@ -32,11 +34,11 @@ export const reconnectStepDefinitions: StepDefinitions = ({ given, and, when, th
3234
expect(readyRunCount).toEqual(1);
3335
});
3436
and("the PROVIDER_ERROR handler must run when the provider's connection is lost", async () => {
35-
await new Promise((resolve) => setTimeout(resolve, 10000));
37+
await new Promise((resolve) => setTimeout(resolve, retryDelayMs));
3638
expect(errorRunCount).toBeGreaterThan(0);
3739
});
3840
and('when the connection is reestablished the PROVIDER_READY handler must run again', async () => {
39-
await new Promise((resolve) => setTimeout(resolve, 10000));
41+
await new Promise((resolve) => setTimeout(resolve, retryDelayMs));
4042
expect(readyRunCount).toBeGreaterThan(1);
4143
});
4244
when('a flagd provider is set and initialization is awaited', () => {

Diff for: libs/providers/flagd/src/e2e/tests/in-process-reconnect.spec.ts

+10-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import { FlagdProvider } from '../../lib/flagd-provider';
44
import { GenericContainer, StartedTestContainer } from 'testcontainers';
55
import { autoBindSteps, loadFeature } from 'jest-cucumber';
66
import {
7-
UNSTABLE_CLIENT_NAME,
8-
UNAVAILABLE_CLIENT_NAME,
97
FLAGD_NAME,
108
GHERKIN_FLAGD_RECONNECT_FEATURE,
11-
IMAGE_VERSION,
9+
UNAVAILABLE_CLIENT_NAME,
10+
UNSTABLE_CLIENT_NAME,
1211
} from '../constants';
12+
import { IMAGE_VERSION } from '@openfeature/flagd-core';
1313
import { reconnectStepDefinitions } from '../step-definitions';
1414

1515
// register the flagd provider before the tests.
@@ -52,6 +52,13 @@ async function setup() {
5252
}
5353

5454
jest.setTimeout(30000);
55+
/**
56+
* This describe block and retry settings are calibrated to gRPC's retry time
57+
* and our testing container's restart cadence.
58+
*/
59+
const retryTimes = 240;
60+
jest.retryTimes(retryTimes);
61+
5562
describe('in process', () => {
5663
let containers: StartedTestContainer[] = [];
5764
beforeAll(async () => {

Diff for: libs/providers/flagd/src/e2e/tests/in-process.spec.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ import { FlagdProvider } from '../../lib/flagd-provider';
44
import { GenericContainer, StartedTestContainer } from 'testcontainers';
55
import { autoBindSteps, loadFeature } from 'jest-cucumber';
66
import {
7-
E2E_CLIENT_NAME,
87
FLAGD_NAME,
98
GHERKIN_EVALUATION_FEATURE,
109
GHERKIN_FLAGD_FEATURE,
1110
GHERKIN_FLAGD_JSON_EVALUATOR_FEATURE,
12-
IMAGE_VERSION,
1311
} from '../constants';
1412
import { flagStepDefinitions } from '../step-definitions';
13+
import { E2E_CLIENT_NAME, IMAGE_VERSION } from '@openfeature/flagd-core';
1514

1615
// register the flagd provider before the tests.
1716
async function setup() {

Diff for: libs/providers/flagd/src/e2e/tests/rpc-reconnect.spec.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import { FlagdProvider } from '../../lib/flagd-provider';
44
import { GenericContainer, StartedTestContainer } from 'testcontainers';
55
import { autoBindSteps, loadFeature } from 'jest-cucumber';
66
import {
7-
UNSTABLE_CLIENT_NAME,
8-
UNAVAILABLE_CLIENT_NAME,
97
FLAGD_NAME,
108
GHERKIN_FLAGD_RECONNECT_FEATURE,
11-
IMAGE_VERSION,
9+
UNAVAILABLE_CLIENT_NAME,
10+
UNSTABLE_CLIENT_NAME,
1211
} from '../constants';
1312
import { reconnectStepDefinitions } from '../step-definitions';
13+
import { IMAGE_VERSION } from '@openfeature/flagd-core';
1414

1515
// register the flagd provider before the tests.
1616
async function setup() {

Diff for: libs/providers/flagd/src/e2e/tests/rpc.spec.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import { FlagdProvider } from '../../lib/flagd-provider';
44
import { GenericContainer, StartedTestContainer } from 'testcontainers';
55
import { autoBindSteps, loadFeature } from 'jest-cucumber';
66
import {
7-
E2E_CLIENT_NAME,
87
FLAGD_NAME,
98
GHERKIN_EVALUATION_FEATURE,
109
GHERKIN_FLAGD_FEATURE,
1110
GHERKIN_FLAGD_JSON_EVALUATOR_FEATURE,
12-
IMAGE_VERSION,
1311
} from '../constants';
12+
import { E2E_CLIENT_NAME, IMAGE_VERSION } from '@openfeature/flagd-core';
1413
import { flagStepDefinitions } from '../step-definitions';
1514

1615
// register the flagd provider before the tests.

Diff for: libs/shared/flagd-core/package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: libs/shared/flagd-core/src/e2e/index.ts

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export const E2E_CLIENT_NAME = 'e2e';
2+
3+
export const IMAGE_VERSION = 'v0.5.13';
4+
5+
export function getGherkinTestPath(file: string, modulePath = 'test-harness/gherkin/'): string {
6+
// TODO: find a way to resolve this in a generic manner - currently this works, because of the file structure
7+
return `<rootdir>/../../../../../shared/flagd-core/${modulePath}${file}`;
8+
}

Diff for: libs/shared/flagd-core/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export * from './lib/flagd-core';
22
export * from './lib/feature-flag';
33
export * from './lib/storage';
4+
export * from './e2e';

Diff for: libs/shared/flagd-core/tsconfig.lib.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
"types": []
77
},
88
"include": ["src/**/*.ts"],
9-
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
9+
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts", "src/e2e"]
1010
}

Diff for: libs/shared/flagd-core/tsconfig.spec.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
"module": "commonjs",
66
"types": ["jest", "node"]
77
},
8-
"include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"]
8+
"include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts", "src/e2e"]
99
}

0 commit comments

Comments
 (0)