Skip to content

Commit 8c096dc

Browse files
committed
[integration] Unified parallel testing everywhere
1 parent 63add05 commit 8c096dc

File tree

6 files changed

+100
-145
lines changed

6 files changed

+100
-145
lines changed

.drone.yml

Lines changed: 87 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
1+
---
12
kind: pipeline
2-
type: docker
3-
name: openbas-tests-pull-request
4-
concurrency: {
5-
limit: 2
6-
}
7-
8-
trigger:
9-
event:
10-
- pull_request
3+
name: openbas-tests
114

125
steps:
136
- name: submodules
147
image: alpine/git
158
commands:
169
- git submodule update --init --recursive
10+
1711
- name: api-tests
1812
image: maven:3.9.6-eclipse-temurin-21
1913
environment:
@@ -30,8 +24,12 @@ steps:
3024
- mvn test
3125
depends_on:
3226
- submodules
27+
3328
- name: frontend-tests
34-
image: node:20.11.0-alpine3.18
29+
image: node:20-alpine
30+
volumes:
31+
- name: cache-node-frontend
32+
path: /drone/src/openbas-front/node_modules
3533
commands:
3634
- cd openbas-front
3735
- yarn install
@@ -41,141 +39,34 @@ steps:
4139
- yarn i18n-checker
4240
- NODE_OPTIONS=--max_old_space_size=8192 yarn test
4341

44-
services:
45-
- name: minio
46-
image: minio/minio:RELEASE.2023-12-02T10-51-33Z-cpuv1
47-
environment:
48-
MINIO_ROOT_USER: minioadmin
49-
MINIO_ROOT_PASSWORD: minioadmin
50-
command: [ server, /data ]
51-
- name: pgsql
52-
image: postgres:16-alpine
53-
environment:
54-
POSTGRES_USER: openbas
55-
POSTGRES_PASSWORD: openbas
56-
POSTGRES_DB: openbas
57-
58-
---
59-
60-
kind: pipeline
61-
type: docker
62-
name: openbas-e2e-tests-pull-request
63-
concurrency: {
64-
limit: 2
65-
}
66-
67-
trigger:
68-
event:
69-
- pull_request
70-
71-
steps:
72-
- name: e2e-tests
73-
image: node:20.11.0
42+
- name: frontend-e2e-tests
43+
image: node:20.11.1
44+
volumes:
45+
- name: cache-node-frontend-e2e
46+
path: /drone/src/openbas-front/node_modules
7447
commands:
7548
- apt update
7649
- apt -y install netcat-traditional
77-
- while ! nc -z app-start 8080 ; do sleep 1 ; done
50+
- while ! nc -z app-e2e 8080 ; do sleep 1 ; done
7851
- cd openbas-front
7952
- yarn install
8053
- yarn playwright install --with-deps chromium
81-
- APP_URL=http://app-start:8080 yarn test:e2e
82-
83-
services:
84-
- name: minio
85-
image: minio/minio:RELEASE.2023-12-02T10-51-33Z-cpuv1
86-
environment:
87-
MINIO_ROOT_USER: minioadmin
88-
MINIO_ROOT_PASSWORD: minioadmin
89-
command: [ server, /data ]
90-
- name: pgsql
91-
image: postgres:16-alpine
92-
environment:
93-
POSTGRES_USER: openbas
94-
POSTGRES_PASSWORD: openbas
95-
POSTGRES_DB: openbas
96-
- name: app-start
97-
image: maven:3.9.6-eclipse-temurin-21
98-
environment:
99-
SPRING_DATASOURCE_URL: jdbc:postgresql://pgsql:5432/openbas
100-
SPRING_DATASOURCE_USERNAME: openbas
101-
SPRING_DATASOURCE_PASSWORD: openbas
102-
MINIO_ENDPOINT: minio
103-
MINIO_PORT: 9000
104-
MINIO_ACCESS_KEY: minioadmin
105-
MINIO_ACCESS_SECRET: minioadmin
106-
OPENBAS_ADMIN_EMAIL: [email protected]
107-
OPENBAS_ADMIN_PASSWORD: admin
108-
OPENBAS_ADMIN_TOKEN: 0d17ce9a-f3a8-4c6d-9721-c98dc3dc023f
109-
commands:
110-
- apt update && apt install -y gnupg
111-
- curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
112-
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
113-
- curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
114-
- apt update
115-
- apt install -y yarn
116-
- apt install -y nodejs
117-
- apt install -y git
118-
- git submodule update --init --recursive
119-
- cd openbas-front
120-
- yarn install
121-
- yarn build
122-
- cd ..
123-
- mvn install -DskipTests=true
124-
- java -jar openbas-api/target/openbas-api.jar
125-
126-
---
127-
128-
kind: pipeline
129-
type: docker
130-
name: openbas-tests-master
131-
132-
trigger:
133-
branch:
134-
- master
135-
event:
136-
exclude:
137-
- pull_request
138-
139-
steps:
140-
- name: submodules
141-
image: alpine/git
142-
commands:
143-
- git submodule update --init --recursive
144-
- name: api-tests
145-
image: maven:3.9.6-eclipse-temurin-21
146-
environment:
147-
SPRING_DATASOURCE_URL: jdbc:postgresql://pgsql:5432/openbas
148-
MINIO_ENDPOINT: minio
149-
MINIO_PORT: 9000
150-
commands:
151-
- mvn install -DskipTests
152-
- cd openbas-api
153-
- mvn test
154-
- cd ../openbas-framework
155-
- mvn test
156-
- cd ../openbas-injectors
157-
- mvn test
54+
- APP_URL=http://app-e2e:8080 yarn test:e2e
15855
depends_on:
159-
- submodules
160-
- name: frontend-tests
161-
image: node:20.11.0-alpine3.18
162-
commands:
163-
- cd openbas-front
164-
- yarn install
165-
- yarn build
166-
- yarn check-ts
167-
- yarn lint
168-
- yarn i18n-checker
169-
- NODE_OPTIONS=--max_old_space_size=8192 yarn test
56+
- frontend-tests
57+
17058
- name: codecov
17159
image: robertstettner/drone-codecov
17260
settings:
17361
token:
174-
from_secret: CODECOV_TOKEN
62+
from_secret: codecov_token
17563
files:
17664
- openbas-api/target/site/jacoco/jacoco.xml
17765
- openbas-framework/target/site/jacoco/jacoco.xml
17866
- openbas-injectors/openbas-caldera/target/site/jacoco/jacoco.xml
67+
depends_on:
68+
- api-tests
69+
17970
- name: build-circleci
18071
image: curlimages/curl
18172
commands:
@@ -187,6 +78,11 @@ steps:
18778
event:
18879
exclude:
18980
- tag
81+
depends_on:
82+
- api-tests
83+
- frontend-tests
84+
- frontend-e2e-tests
85+
19086
- name: build-circleci-release
19187
image: curlimages/curl
19288
commands:
@@ -197,6 +93,11 @@ steps:
19793
when:
19894
event:
19995
- tag
96+
depends_on:
97+
- api-tests
98+
- frontend-tests
99+
- frontend-e2e-tests
100+
200101
- name: slack
201102
image: plugins/slack
202103
settings:
@@ -206,6 +107,10 @@ steps:
206107
channel: notifications
207108
when:
208109
status: [ success, failure ]
110+
depends_on:
111+
- api-tests
112+
- frontend-tests
113+
- frontend-e2e-tests
209114

210115
services:
211116
- name: minio
@@ -220,3 +125,55 @@ services:
220125
POSTGRES_USER: openbas
221126
POSTGRES_PASSWORD: openbas
222127
POSTGRES_DB: openbas
128+
- name: minio-e2e
129+
image: minio/minio:RELEASE.2023-12-02T10-51-33Z-cpuv1
130+
environment:
131+
MINIO_ROOT_USER: minioadmin
132+
MINIO_ROOT_PASSWORD: minioadmin
133+
command: [ server, /data ]
134+
- name: pgsql-e2e
135+
image: postgres:16-alpine
136+
environment:
137+
POSTGRES_USER: openbas
138+
POSTGRES_PASSWORD: openbas
139+
POSTGRES_DB: openbas
140+
- name: app-e2e
141+
image: maven:3.9.6-eclipse-temurin-21
142+
environment:
143+
SPRING_DATASOURCE_URL: jdbc:postgresql://pgsql-e2e:5432/openbas
144+
SPRING_DATASOURCE_USERNAME: openbas
145+
SPRING_DATASOURCE_PASSWORD: openbas
146+
MINIO_ENDPOINT: minio-e2e
147+
MINIO_PORT: 9000
148+
MINIO_ACCESS_KEY: minioadmin
149+
MINIO_ACCESS_SECRET: minioadmin
150+
OPENBAS_ADMIN_EMAIL: [email protected]
151+
OPENBAS_ADMIN_PASSWORD: admin
152+
OPENBAS_ADMIN_TOKEN: 0d17ce9a-f3a8-4c6d-9721-c98dc3dc023f
153+
commands:
154+
- apt update && apt install -y gnupg
155+
- curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
156+
- echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
157+
- curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
158+
- apt update
159+
- apt install -y yarn
160+
- apt install -y nodejs
161+
- apt install -y git
162+
- git submodule update --init --recursive
163+
- cd openbas-front
164+
- yarn install
165+
- yarn build
166+
- cd ..
167+
- mvn install -DskipTests=true
168+
- java -jar openbas-api/target/openbas-api.jar
169+
170+
volumes:
171+
- name: cache-node-frontend
172+
host:
173+
path: /tmp/cache-node-frontend
174+
- name: cache-node-frontend-e2e
175+
host:
176+
path: /tmp/cache-node-frontend-e2e
177+
- name: cache-python
178+
host:
179+
path: /tmp/cache-python

openbas-front/src/admin/components/nav/LeftBar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ const LeftBar = () => {
360360
</MenuItem>
361361
</StyledTooltip>
362362
<MenuItem
363+
aria-label="Assets"
363364
ref={anchors.assets}
364365
href='assets'
365366
selected={!navOpen && location.pathname.includes('/admin/assets')}

openbas-front/src/admin/components/nav/TopBar.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ const TopBar: React.FC = () => {
208208
<Tooltip title={settings.xtm_opencti_enable && settings.xtm_opencti_url ? t('Platform connected') : t('Get OpenCTI now')}>
209209
<a className={classes.xtmItem}
210210
href={settings.xtm_opencti_enable && settings.xtm_opencti_url ? settings.xtm_opencti_url : 'https://filigran.io'}
211-
target="_blank" rel="noreferrer"
211+
target="_blank" rel="noreferrer" onClick={handleCloseXtm}
212212
>
213213
<Badge variant="dot" color={settings.xtm_opencti_enable && settings.xtm_opencti_url ? 'success' : 'warning'}>
214214
<img style={{ width: 40 }} src={theme.palette.mode === 'dark' ? octiDark : octiLight} alt="OCTI" />
@@ -229,7 +229,7 @@ const TopBar: React.FC = () => {
229229
</Grid>
230230
<Grid item={true} xs={6}>
231231
<Tooltip title={t('Platform under construction, subscribe to update!')}>
232-
<a className={classes.xtmItem} href="https://filigran.io" target="_blank" rel="noreferrer">
232+
<a className={classes.xtmItem} href="https://filigran.io" target="_blank" rel="noreferrer" onClick={handleCloseXtm}>
233233
<Badge variant="dot" color="info">
234234
<img style={{ width: 40 }} src={theme.palette.mode === 'dark' ? oermDark : oermLight} alt="OERM" />
235235
</Badge>
@@ -239,7 +239,7 @@ const TopBar: React.FC = () => {
239239
</Grid>
240240
<Grid item={true} xs={6}>
241241
<Tooltip title={t('Platform under construction, subscribe to update!')}>
242-
<a className={classes.xtmItem} href="https://filigran.io" target="_blank" rel="noreferrer">
242+
<a className={classes.xtmItem} href="https://filigran.io" target="_blank" rel="noreferrer" onClick={handleCloseXtm}>
243243
<Badge variant="dot" color="info">
244244
<img style={{ width: 40 }} src={theme.palette.mode === 'dark' ? omtdDark : omtdLight} alt="OMTD" />
245245
</Badge>

openbas-front/tests_e2e/tests/assets/create-asset.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { expect } from '@playwright/test';
22
import { test } from '../../fixtures/baseFixtures';
33
import appUrl from '../../utils/url';
4-
import LeftMenuPage from '../../model/left-menu.page';
54
import AssetsPage from '../../model/assets/assets.page';
65
import AssetFormPage from '../../model/assets/asset-form.page';
76
import fillLinuxAssetBase from '../../fixtures/assetFixtures';
87

98
test('Create an asset', async ({ page }) => {
109
// -- PREPARE --
11-
await page.goto(appUrl());
10+
await page.goto(`${appUrl()}/admin/assets`);
1211

13-
const leftMenuPage = new LeftMenuPage(page);
14-
await leftMenuPage.goToAssets();
12+
// const leftMenuPage = new LeftMenuPage(page);
13+
// await leftMenuPage.goToAssets();
1514

1615
// -- EXECUTE --
1716
const assetsPage = new AssetsPage(page);

openbas-front/tests_e2e/tests/assets/delete-asset.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { expect } from '@playwright/test';
22
import { test } from '../../fixtures/baseFixtures';
33
import appUrl from '../../utils/url';
4-
import LeftMenuPage from '../../model/left-menu.page';
54
import AssetsPage from '../../model/assets/assets.page';
65
import AssetFormPage from '../../model/assets/asset-form.page';
76
import fillLinuxAssetBase from '../../fixtures/assetFixtures';
87

98
test('Delete an asset', async ({ page }) => {
109
// -- PREPARE --
11-
await page.goto(appUrl());
10+
await page.goto(`${appUrl()}/admin/assets`);
1211

13-
const leftMenuPage = new LeftMenuPage(page);
14-
await leftMenuPage.goToAssets();
12+
// const leftMenuPage = new LeftMenuPage(page);
13+
// await leftMenuPage.goToAssets();
1514

1615
const assetsPage = new AssetsPage(page);
1716
await assetsPage.getAddButton().click();

openbas-front/tests_e2e/tests/assets/update-asset.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import { expect } from '@playwright/test';
22
import { test } from '../../fixtures/baseFixtures';
33
import appUrl from '../../utils/url';
4-
import LeftMenuPage from '../../model/left-menu.page';
54
import AssetsPage from '../../model/assets/assets.page';
65
import AssetFormPage from '../../model/assets/asset-form.page';
76
import fillLinuxAssetBase from '../../fixtures/assetFixtures';
87

98
test('Update an asset', async ({ page }) => {
109
// -- PREPARE --
11-
await page.goto(appUrl());
10+
await page.goto(`${appUrl()}/admin/assets`);
1211

13-
const leftMenuPage = new LeftMenuPage(page);
14-
await leftMenuPage.goToAssets();
12+
// const leftMenuPage = new LeftMenuPage(page);
13+
// await leftMenuPage.goToAssets();
1514

1615
const assetsPage = new AssetsPage(page);
1716
await assetsPage.getAddButton().click();

0 commit comments

Comments
 (0)