Skip to content

Commit 755d18a

Browse files
authored
Merge pull request #131 from kstekovi/EAPQE-4285
dependencies update
2 parents ee20c23 + 328ffe5 commit 755d18a

63 files changed

Lines changed: 384 additions & 369 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

.eslintrc.cjs

Lines changed: 0 additions & 24 deletions
This file was deleted.

.github/workflows/manual-test-matrix-workflow.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
- name: "Setup NodeJS"
5151
uses: actions/setup-node@v4
5252
with:
53-
node-version: "16"
53+
node-version: "22"
5454
- name: "Setup JDK"
5555
uses: actions/setup-java@v4
5656
with:
@@ -71,7 +71,7 @@ jobs:
7171
- name: "Run compile"
7272
run: "npm run compile"
7373
- name: "Run test(s)"
74-
run: "cd packages/testsuite && npm test -- --browser=firefox --specs=cypress/e2e/${{ matrix.specs }}"
74+
run: "npm run test:compiled -- --browser=firefox --specs=packages/testsuite/cypress/e2e/${{ matrix.specs }}"
7575
- name: "Archive test report(s) and video(s)"
7676
if: ${{ !cancelled() }}
7777
uses: actions/upload-artifact@v4
@@ -91,13 +91,13 @@ jobs:
9191
- name: "Setup NodeJS"
9292
uses: actions/setup-node@v4
9393
with:
94-
node-version: "16"
94+
node-version: "22"
9595
- name: "Install necessary tools"
9696
run: npm install -g copyfiles gh-pages@3.0.0 mochawesome-merge mochawesome-report-generator
9797
- name: "Generate Mochawesome Report"
98-
run: mochawesome-merge "./*-artifacts/results/cypress/e2e/*.json" > mochawesome.json
98+
run: mochawesome-merge "./*-artifacts/results/packages/testsuite/cypress/e2e/*.json" > mochawesome.json
9999
- name: "Copy video assets"
100-
run: copyfiles -u 3 "./*-artifacts/cypress/videos/*.mp4" mochawesome-report/assets/videos
100+
run: copyfiles -u 3 "./*-artifacts/packages/testsuite/cypress/videos/*.mp4" mochawesome-report/assets/videos
101101
- name: "Create GH Pages content"
102102
run: marge mochawesome.json -f index.html
103103
- name: "Get time info"

.github/workflows/on-pull-request-workflow.yaml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
- name: "Setup NodeJS"
1515
uses: actions/setup-node@v4
1616
with:
17-
node-version: "16"
17+
node-version: "22"
1818
- name: "Setup JDK"
1919
uses: actions/setup-java@v4
2020
with:
@@ -36,6 +36,5 @@ jobs:
3636
- name: "Run tests of modified files"
3737
if: steps.changed-files-specific.outputs.any_changed == 'true'
3838
run: |
39-
cd packages/testsuite
40-
SPECS=$(echo ${{ steps.changed-files-specific.outputs.all_changed_files }} | sed "s|packages/testsuite/||g")
41-
KEYCLOAK_IMAGE=quay.io/keycloak/keycloak:24.0 npm run test-compiled -- --browser=chrome --specs=$SPECS
39+
SPECS="${{ steps.changed-files-specific.outputs.all_changed_files }}"
40+
KEYCLOAK_IMAGE=quay.io/keycloak/keycloak:24.0 npm run test -- --browser=chrome --specs=$SPECS

.github/workflows/reusable-build-project-workflow.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
- name: "Setup NodeJS"
1717
uses: actions/setup-node@v4
1818
with:
19-
node-version: "16"
19+
node-version: "22"
2020
- name: "Setup JDK"
2121
uses: actions/setup-java@v4
2222
with:
@@ -36,7 +36,7 @@ jobs:
3636
run: "npm run compile"
3737
- name: "Run all tests"
3838
if: "${{ github.event.inputs.spec == '' }}"
39-
run: "cd packages/testsuite && npm test"
39+
run: "npm run test:compiled"
4040
- name: "Run specific test"
4141
if: "${{ github.event.inputs.spec != '' }}"
42-
run: "cd packages/testsuite && npm test -- --specs=${{ inputs.spec }}"
42+
run: "npm run test:compiled -- --specs=${{ inputs.spec }}"

.github/workflows/scheduled-run-all-tests-workflow.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050
- name: "Setup NodeJS"
5151
uses: actions/setup-node@v4
5252
with:
53-
node-version: "16"
53+
node-version: "22"
5454
- name: "Setup JDK"
5555
uses: actions/setup-java@v4
5656
with:
@@ -71,7 +71,7 @@ jobs:
7171
- name: "Run compile"
7272
run: "npm run compile"
7373
- name: "Run test(s)"
74-
run: "cd packages/testsuite && npm test -- --browser=chrome --specs=cypress/e2e/${{ matrix.specs }}/*.cy.ts"
74+
run: "npm run test:compiled -- --browser=chrome --specs=packages/testsuite/cypress/e2e/${{ matrix.specs }}/*.cy.ts"
7575
- name: "Archive test report(s) and video(s)"
7676
if: ${{ !cancelled() }}
7777
uses: actions/upload-artifact@v4
@@ -91,13 +91,13 @@ jobs:
9191
- name: "Setup NodeJS"
9292
uses: actions/setup-node@v4
9393
with:
94-
node-version: "16"
94+
node-version: "22"
9595
- name: "Install necessary tools"
9696
run: npm install -g copyfiles gh-pages@3.0.0 mochawesome-merge mochawesome-report-generator
9797
- name: "Generate Mochawesome Report"
98-
run: mochawesome-merge "./*-artifacts/results/cypress/e2e/*.json" > mochawesome.json
98+
run: mochawesome-merge "./*-artifacts/results/packages/testsuite/cypress/e2e/*.json" > mochawesome.json
9999
- name: "Copy video assets"
100-
run: copyfiles -u 3 "./*-artifacts/cypress/videos/*.mp4" mochawesome-report/assets/videos
100+
run: copyfiles -u 3 "./*-artifacts/packages/testsuite/cypress/videos/*.mp4" mochawesome-report/assets/videos
101101
- name: "Create GH Pages content"
102102
run: marge mochawesome.json -f index.html
103103
- name: "Get time info"

README.md

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,33 @@ in the root directory to download all of the NPM dependencies specified in `pack
5353
npm run develop
5454
```
5555

56-
- If you want to execute whole testsuite, navigate to `packages/testsuite` and from within that directory execute `npm test`
57-
- It is also possible to run on specific browser by supplying `--browser` argument, e.g
58-
```
59-
npm test -- --browser=chrome
60-
```
61-
- It is also possible to reduce the amount of specs executed by passing `--specs` flag. This flag must be relative to the `packages/testsuite` directory and supports glob patterns, e.g to execute only `ejb` related tests, run
62-
```
63-
npm test -- --specs="cypress/e2e/ejb/*.cy.ts"
64-
```
65-
- If you wish to run the test suite against custom HAL or WildFly images, you can use `HAL_IMAGE` and `WILDFLY_IMAGE` environment variables to specify custom images, e.g
66-
```
67-
HAL_IMAGE=quay.io/myorg/hal WILDFLY_IMAGE=quay.io/myorg/wildfly npm test ...
68-
```
56+
- If you want to execute whole testsuite execute `npm test`
57+
58+
- It is also possible to run on specific browser by supplying `--browser` argument, e.g
59+
60+
```
61+
npm test -- --browser=chrome
62+
```
63+
64+
- It is possible to reduce the amount of specs executed by passing `--specs` flag. It also supports glob patterns, e.g to execute only `homepage` related tests, run
65+
66+
```
67+
npm test -- --specs="packages/testsuite/cypress/e2e/homepage/test-homepage.cy.ts"
68+
or
69+
npm test -- --specs="packages/testsuite/cypress/e2e/homepage/*.cy.ts"
70+
```
71+
72+
- If you want to run tests without cleaning and a resources compilations (useful for CI), use
73+
74+
```
75+
npm run test:compiled -- --specs="packages/testsuite/cypress/e2e/homepage/test-homepage.cy.ts"
76+
```
77+
78+
- If you wish to run the test suite against custom HAL or WildFly images, you can use `HAL_IMAGE` and `WILDFLY_IMAGE` environment variables to specify custom images, e.g
79+
80+
```
81+
HAL_IMAGE=quay.io/myorg/hal WILDFLY_IMAGE=quay.io/myorg/wildfly npm test ...
82+
```
6983

7084
- For debugging purposes videos (and screenshots) of failed tests are stored after the test run (works only with chrome).
7185

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { defineConfig } from "cypress";
33
import { PullPolicy, GenericContainer, StartedTestContainer, StoppedTestContainer, Wait } from "testcontainers";
44
import { Environment } from "testcontainers/build/types";
55
import { findAPortNotInUse } from "portscanner";
6-
import fs from "fs";
6+
import * as fs from "fs";
77

88
export default defineConfig({
99
defaultCommandTimeout: 16000,
@@ -14,6 +14,8 @@ export default defineConfig({
1414
video: true,
1515
videoCompression: false,
1616
e2e: {
17+
supportFile: "packages/testsuite/cypress/support/e2e.ts",
18+
specPattern: "packages/testsuite/cypress/e2e/**/*.cy.ts",
1719
setupNodeEvents(on, config) {
1820
const startedContainers: Map<string, StartedTestContainer> = new Map<string, StartedTestContainer>();
1921
const startedContainersManagementPorts: Map<string, number> = new Map<string, number>();
@@ -22,13 +24,13 @@ export default defineConfig({
2224
return new Promise((resolve, reject) => {
2325
let portOffset = 0;
2426
const wildfly = new GenericContainer(
25-
process.env.WILDFLY_IMAGE || "quay.io/halconsole/wildfly-development:latest"
27+
process.env.WILDFLY_IMAGE || "quay.io/halconsole/wildfly-development:latest",
2628
)
2729
.withPullPolicy(PullPolicy.alwaysPull())
2830
.withName(name as string)
2931
.withCopyDirectoriesToContainer([
3032
{
31-
source: __dirname + "/cypress/fixtures",
33+
source: __dirname + "/packages/testsuite/cypress/fixtures",
3234
target: "/home/fixtures",
3335
mode: parseInt("0777", 8),
3436
},
@@ -121,7 +123,7 @@ export default defineConfig({
121123
const interval = setInterval(() => {
122124
if (new Date().getTime() - startTime > 10000) {
123125
clearInterval(interval);
124-
reject();
126+
reject(new Error("Timeout waiting for WildFly to start"));
125127
}
126128
axios
127129
.post(managementApi, {
@@ -143,9 +145,9 @@ export default defineConfig({
143145
});
144146
}
145147
})
146-
.catch((err) => {
148+
.catch((err: unknown) => {
147149
console.log(err);
148-
reject(err);
150+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
149151
});
150152
});
151153
},
@@ -161,7 +163,7 @@ export default defineConfig({
161163
})
162164
.withBindMounts([
163165
{
164-
source: __dirname + "/cypress/fixtures/realm-configuration.json",
166+
source: __dirname + "/packages/testsuite/cypress/fixtures/realm-configuration.json",
165167
target: "/opt/keycloak/data/import/realm-configuration.json",
166168
mode: "z",
167169
},
@@ -181,9 +183,9 @@ export default defineConfig({
181183
console.log(`Keycloak is ready: ${keycloakServer}`);
182184
resolve(keycloakServer);
183185
})
184-
.catch((err) => {
186+
.catch((err: unknown) => {
185187
console.log(err);
186-
reject(err);
188+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
187189
});
188190
});
189191
});
@@ -195,7 +197,7 @@ export default defineConfig({
195197
.withNetworkAliases(name as string)
196198
.withNetworkMode(config.env.NETWORK_NAME as string)
197199
.withWaitStrategy(
198-
Wait.forLogMessage(new RegExp(".*PostgreSQL init process complete; ready for start up.*"))
200+
Wait.forLogMessage(new RegExp(".*PostgreSQL init process complete; ready for start up.*")),
199201
)
200202
.withExposedPorts(5432)
201203
.withEnvironment(environmentProperties as Environment);
@@ -207,9 +209,9 @@ export default defineConfig({
207209
startedContainers.set("postgres", postgreContainer);
208210
resolve(postgreContainer);
209211
})
210-
.catch((err) => {
212+
.catch((err: unknown) => {
211213
console.log(err);
212-
reject(err);
214+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
213215
});
214216
});
215217
},
@@ -230,9 +232,9 @@ export default defineConfig({
230232
startedContainers.set("mysql", mysqlContainer);
231233
resolve(mysqlContainer);
232234
})
233-
.catch((err) => {
235+
.catch((err: unknown) => {
234236
console.log(err);
235-
reject(err);
237+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
236238
});
237239
});
238240
},
@@ -253,15 +255,15 @@ export default defineConfig({
253255
startedContainers.set("mariadb", mariadbContainer);
254256
resolve(mariadbContainer);
255257
})
256-
.catch((err) => {
258+
.catch((err: unknown) => {
257259
console.log(err);
258-
reject(err);
260+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
259261
});
260262
});
261263
},
262264
"start:sqlserver:container": ({ name, environmentProperties }) => {
263265
const sqlserverContainerBuilder = new GenericContainer(
264-
process.env.MSSQL_IMAGE || "mcr.microsoft.com/mssql/server:2022-latest"
266+
process.env.MSSQL_IMAGE || "mcr.microsoft.com/mssql/server:2022-latest",
265267
)
266268
.withPullPolicy(PullPolicy.alwaysPull())
267269
.withName(name as string)
@@ -278,9 +280,9 @@ export default defineConfig({
278280
startedContainers.set("sqlserver", sqlServerContainer);
279281
resolve(sqlServerContainer);
280282
})
281-
.catch((err) => {
283+
.catch((err: unknown) => {
282284
console.log(err);
283-
reject(err);
285+
reject(err instanceof Error ? err : new Error(JSON.stringify(err)));
284286
});
285287
});
286288
},
@@ -292,7 +294,7 @@ export default defineConfig({
292294
managementPort = managementPort ?? 9990;
293295
containerToExec
294296
?.exec([
295-
"/bin/bash",
297+
"/bin/sh",
296298
"-c",
297299
`$JBOSS_HOME/bin/jboss-cli.sh --connect --controller=localhost:${managementPort} --commands=${
298300
command as string
@@ -303,10 +305,10 @@ export default defineConfig({
303305
resolve(value);
304306
} else {
305307
console.log(value);
306-
reject(value);
308+
reject(new Error(`Command failed with exit code ${value.exitCode}: ${value.output || ""}`));
307309
}
308310
})
309-
.catch((err: { response: { data: string } }) => reject(err.response.data));
311+
.catch((err: { response: { data: string } }) => reject(new Error(err.response.data)));
310312
});
311313
},
312314
"execute:cli": ({ managementApi, operation, address, ...args }) => {
@@ -321,7 +323,7 @@ export default defineConfig({
321323
resolve(response.data);
322324
})
323325
.catch((err: { response: { data: string } }) => {
324-
reject(err.response.data);
326+
reject(new Error(err.response.data));
325327
});
326328
}).catch((error) => {
327329
console.log(error);

eslint.config.mjs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import eslint from "@eslint/js";
2+
import tseslint from "typescript-eslint";
3+
import eslintConfigPrettier from "eslint-config-prettier";
4+
5+
export default [
6+
{
7+
ignores: ["**/dist/**", "**/node_modules/**", "eslint.config.mjs"],
8+
},
9+
eslint.configs.recommended,
10+
...tseslint.configs.recommendedTypeChecked,
11+
eslintConfigPrettier,
12+
{
13+
languageOptions: {
14+
parserOptions: {
15+
projectService: {
16+
allowDefaultProject: ["cypress.config.ts"],
17+
},
18+
tsconfigRootDir: import.meta.dirname,
19+
},
20+
},
21+
rules: {
22+
"@typescript-eslint/no-floating-promises": [
23+
"error",
24+
{
25+
ignoreIIFE: true,
26+
},
27+
],
28+
"@typescript-eslint/no-namespace": "off",
29+
},
30+
},
31+
];

0 commit comments

Comments
 (0)