Skip to content

Commit 5f10e5f

Browse files
authored
Merge branch 'main' into fix/e2e-ocp-operator-nightly-failures
2 parents c5d0868 + c6a70a5 commit 5f10e5f

28 files changed

Lines changed: 3590 additions & 136 deletions

.ci/pipelines/jobs/ocp-nightly.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ run_sanity_plugins_check() {
6666

6767
run_localization_tests() {
6868
local url="https://${RELEASE_NAME}-developer-hub-${NAME_SPACE}.${K8S_CLUSTER_ROUTER_BASE}"
69-
local locales=("FR" "IT" "JA")
69+
local locales=("DE" "ES" "FR" "IT" "JA")
7070

7171
log::section "Running localization tests"
7272
# Loop through all locales - uses project name as artifacts_subdir to avoid overwriting test artifacts

.ci/pipelines/resources/config_map/app-config-rhdh.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,8 +252,9 @@ userSettings:
252252
i18n:
253253
locales:
254254
- en
255+
- de
256+
- es
255257
- fr
256258
- it
257259
- ja
258-
- de
259260
defaultLocale: en

.claude/memories/ci-e2e-testing.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ test.beforeAll(async ({ }, testInfo) => {
7979
- `showcase-runtime`: Runtime environment tests
8080
- `showcase-sanity-plugins`: Plugin sanity checks
8181
- `showcase-upgrade`: Upgrade scenario tests
82+
- `showcase-localization-de`: German localization tests
83+
- `showcase-localization-es`: Spanish localization tests
8284
- `showcase-localization-fr`: French localization tests
8385
- `showcase-localization-it`: Italian localization tests
8486
- `showcase-localization-ja`: Japanese localization tests
@@ -115,9 +117,9 @@ test.beforeAll(async ({ }, testInfo) => {
115117

116118
7. **Localization Tests** (`playwright/e2e/localization/`)
117119
- Verify UI displays correctly translated strings
118-
- Supports **French (fr)**, **Italian (it)**, and **Japanese (ja)**
120+
- Supports **German (de)**, **Spanish (es)**, **French (fr)**, **Italian (it)**, and **Japanese (ja)**
119121
- Runs as part of OCP nightly job (skipped for OSD-GCP)
120-
- Uses `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
122+
- Uses `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
121123
- Translation files located in `translations/` directory
122124
- Test helper: `e2e-tests/playwright/e2e/localization/locale.ts`
123125

@@ -167,6 +169,8 @@ yarn showcase-auth-providers # Auth provider tests
167169
yarn showcase-sanity-plugins # Plugin sanity tests
168170

169171
# Localization tests
172+
yarn showcase-localization-de # German localization tests
173+
yarn showcase-localization-es # Spanish localization tests
170174
yarn showcase-localization-fr # French localization tests
171175
yarn showcase-localization-it # Italian localization tests
172176
yarn showcase-localization-ja # Japanese localization tests
@@ -512,6 +516,8 @@ The choice of config map depends on the **Playwright test project** being execut
512516
- `showcase-runtime` - Runtime environment tests
513517
- `showcase-sanity-plugins` - Plugin sanity tests
514518
- `showcase-upgrade` - Upgrade scenario tests
519+
- `showcase-localization-de` - German localization tests
520+
- `showcase-localization-es` - Spanish localization tests
515521
- `showcase-localization-fr` - French localization tests
516522
- `showcase-localization-it` - Italian localization tests
517523
- `showcase-localization-ja` - Japanese localization tests

.claude/rules/ci-e2e-testing.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ test.beforeAll(async ({ }, testInfo) => {
7979
- `showcase-runtime`: Runtime environment tests
8080
- `showcase-sanity-plugins`: Plugin sanity checks
8181
- `showcase-upgrade`: Upgrade scenario tests
82+
- `showcase-localization-de`: German localization tests
83+
- `showcase-localization-es`: Spanish localization tests
8284
- `showcase-localization-fr`: French localization tests
8385
- `showcase-localization-it`: Italian localization tests
8486
- `showcase-localization-ja`: Japanese localization tests
@@ -115,9 +117,9 @@ test.beforeAll(async ({ }, testInfo) => {
115117

116118
7. **Localization Tests** (`playwright/e2e/localization/`)
117119
- Verify UI displays correctly translated strings
118-
- Supports **French (fr)**, **Italian (it)**, and **Japanese (ja)**
120+
- Supports **German (de)**, **Spanish (es)**, **French (fr)**, **Italian (it)**, and **Japanese (ja)**
119121
- Runs as part of OCP nightly job (skipped for OSD-GCP)
120-
- Uses `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
122+
- Uses `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
121123
- Translation files located in `translations/` directory
122124
- Test helper: `e2e-tests/playwright/e2e/localization/locale.ts`
123125

@@ -167,6 +169,8 @@ yarn showcase-auth-providers # Auth provider tests
167169
yarn showcase-sanity-plugins # Plugin sanity tests
168170

169171
# Localization tests
172+
yarn showcase-localization-de # German localization tests
173+
yarn showcase-localization-es # Spanish localization tests
170174
yarn showcase-localization-fr # French localization tests
171175
yarn showcase-localization-it # Italian localization tests
172176
yarn showcase-localization-ja # Japanese localization tests
@@ -512,6 +516,8 @@ The choice of config map depends on the **Playwright test project** being execut
512516
- `showcase-runtime` - Runtime environment tests
513517
- `showcase-sanity-plugins` - Plugin sanity tests
514518
- `showcase-upgrade` - Upgrade scenario tests
519+
- `showcase-localization-de` - German localization tests
520+
- `showcase-localization-es` - Spanish localization tests
515521
- `showcase-localization-fr` - French localization tests
516522
- `showcase-localization-it` - Italian localization tests
517523
- `showcase-localization-ja` - Japanese localization tests

.cursor/rules/ci-e2e-testing.mdc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ test.beforeAll(async ({ }, testInfo) => {
8282
- `showcase-runtime`: Runtime environment tests
8383
- `showcase-sanity-plugins`: Plugin sanity checks
8484
- `showcase-upgrade`: Upgrade scenario tests
85+
- `showcase-localization-de`: German localization tests
86+
- `showcase-localization-es`: Spanish localization tests
8587
- `showcase-localization-fr`: French localization tests
8688
- `showcase-localization-it`: Italian localization tests
8789
- `showcase-localization-ja`: Japanese localization tests
@@ -118,9 +120,9 @@ test.beforeAll(async ({ }, testInfo) => {
118120

119121
7. **Localization Tests** (`playwright/e2e/localization/`)
120122
- Verify UI displays correctly translated strings
121-
- Supports **French (fr)**, **Italian (it)**, and **Japanese (ja)**
123+
- Supports **German (de)**, **Spanish (es)**, **French (fr)**, **Italian (it)**, and **Japanese (ja)**
122124
- Runs as part of OCP nightly job (skipped for OSD-GCP)
123-
- Uses `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
125+
- Uses `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
124126
- Translation files located in `translations/` directory
125127
- Test helper: `e2e-tests/playwright/e2e/localization/locale.ts`
126128

@@ -170,6 +172,8 @@ yarn showcase-auth-providers # Auth provider tests
170172
yarn showcase-sanity-plugins # Plugin sanity tests
171173

172174
# Localization tests
175+
yarn showcase-localization-de # German localization tests
176+
yarn showcase-localization-es # Spanish localization tests
173177
yarn showcase-localization-fr # French localization tests
174178
yarn showcase-localization-it # Italian localization tests
175179
yarn showcase-localization-ja # Japanese localization tests
@@ -515,6 +519,8 @@ The choice of config map depends on the **Playwright test project** being execut
515519
- `showcase-runtime` - Runtime environment tests
516520
- `showcase-sanity-plugins` - Plugin sanity tests
517521
- `showcase-upgrade` - Upgrade scenario tests
522+
- `showcase-localization-de` - German localization tests
523+
- `showcase-localization-es` - Spanish localization tests
518524
- `showcase-localization-fr` - French localization tests
519525
- `showcase-localization-it` - Italian localization tests
520526
- `showcase-localization-ja` - Japanese localization tests

.opencode/memories/ci-e2e-testing.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ test.beforeAll(async ({ }, testInfo) => {
7979
- `showcase-runtime`: Runtime environment tests
8080
- `showcase-sanity-plugins`: Plugin sanity checks
8181
- `showcase-upgrade`: Upgrade scenario tests
82+
- `showcase-localization-de`: German localization tests
83+
- `showcase-localization-es`: Spanish localization tests
8284
- `showcase-localization-fr`: French localization tests
8385
- `showcase-localization-it`: Italian localization tests
8486
- `showcase-localization-ja`: Japanese localization tests
@@ -115,9 +117,9 @@ test.beforeAll(async ({ }, testInfo) => {
115117

116118
7. **Localization Tests** (`playwright/e2e/localization/`)
117119
- Verify UI displays correctly translated strings
118-
- Supports **French (fr)**, **Italian (it)**, and **Japanese (ja)**
120+
- Supports **German (de)**, **Spanish (es)**, **French (fr)**, **Italian (it)**, and **Japanese (ja)**
119121
- Runs as part of OCP nightly job (skipped for OSD-GCP)
120-
- Uses `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
122+
- Uses `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
121123
- Translation files located in `translations/` directory
122124
- Test helper: `e2e-tests/playwright/e2e/localization/locale.ts`
123125

@@ -167,6 +169,8 @@ yarn showcase-auth-providers # Auth provider tests
167169
yarn showcase-sanity-plugins # Plugin sanity tests
168170

169171
# Localization tests
172+
yarn showcase-localization-de # German localization tests
173+
yarn showcase-localization-es # Spanish localization tests
170174
yarn showcase-localization-fr # French localization tests
171175
yarn showcase-localization-it # Italian localization tests
172176
yarn showcase-localization-ja # Japanese localization tests
@@ -512,6 +516,8 @@ The choice of config map depends on the **Playwright test project** being execut
512516
- `showcase-runtime` - Runtime environment tests
513517
- `showcase-sanity-plugins` - Plugin sanity tests
514518
- `showcase-upgrade` - Upgrade scenario tests
519+
- `showcase-localization-de` - German localization tests
520+
- `showcase-localization-es` - Spanish localization tests
515521
- `showcase-localization-fr` - French localization tests
516522
- `showcase-localization-it` - Italian localization tests
517523
- `showcase-localization-ja` - Japanese localization tests

.rulesync/rules/ci-e2e-testing.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ test.beforeAll(async ({ }, testInfo) => {
8585
- `showcase-runtime`: Runtime environment tests
8686
- `showcase-sanity-plugins`: Plugin sanity checks
8787
- `showcase-upgrade`: Upgrade scenario tests
88+
- `showcase-localization-de`: German localization tests
89+
- `showcase-localization-es`: Spanish localization tests
8890
- `showcase-localization-fr`: French localization tests
8991
- `showcase-localization-it`: Italian localization tests
9092
- `showcase-localization-ja`: Japanese localization tests
@@ -121,9 +123,9 @@ test.beforeAll(async ({ }, testInfo) => {
121123

122124
7. **Localization Tests** (`playwright/e2e/localization/`)
123125
- Verify UI displays correctly translated strings
124-
- Supports **French (fr)**, **Italian (it)**, and **Japanese (ja)**
126+
- Supports **German (de)**, **Spanish (es)**, **French (fr)**, **Italian (it)**, and **Japanese (ja)**
125127
- Runs as part of OCP nightly job (skipped for OSD-GCP)
126-
- Uses `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
128+
- Uses `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja` Playwright projects
127129
- Translation files located in `translations/` directory
128130
- Test helper: `e2e-tests/playwright/e2e/localization/locale.ts`
129131

@@ -173,6 +175,8 @@ yarn showcase-auth-providers # Auth provider tests
173175
yarn showcase-sanity-plugins # Plugin sanity tests
174176

175177
# Localization tests
178+
yarn showcase-localization-de # German localization tests
179+
yarn showcase-localization-es # Spanish localization tests
176180
yarn showcase-localization-fr # French localization tests
177181
yarn showcase-localization-it # Italian localization tests
178182
yarn showcase-localization-ja # Japanese localization tests
@@ -518,6 +522,8 @@ The choice of config map depends on the **Playwright test project** being execut
518522
- `showcase-runtime` - Runtime environment tests
519523
- `showcase-sanity-plugins` - Plugin sanity tests
520524
- `showcase-upgrade` - Upgrade scenario tests
525+
- `showcase-localization-de` - German localization tests
526+
- `showcase-localization-es` - Spanish localization tests
521527
- `showcase-localization-fr` - French localization tests
522528
- `showcase-localization-it` - Italian localization tests
523529
- `showcase-localization-ja` - Japanese localization tests

docs/database-configuration.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Database Configuration
2+
3+
## PostgreSQL Configuration
4+
5+
RHDH supports PostgreSQL as the backend database. Configure it in your `app-config.yaml`:
6+
7+
```yaml
8+
backend:
9+
database:
10+
client: pg
11+
connection:
12+
host: ${POSTGRES_HOST}
13+
port: ${POSTGRES_PORT}
14+
user: ${POSTGRES_USER}
15+
password: ${POSTGRES_PASSWORD}
16+
database: ${POSTGRES_DB}
17+
```
18+
19+
## Plugin Division Mode: Schema
20+
21+
By default, RHDH creates a separate database for each plugin (e.g., `backstage_plugin_catalog`, `backstage_plugin_scaffolder`). This requires the database user to have `CREATEDB` privileges.
22+
23+
For environments with strict security policies that prohibit database creation, use `pluginDivisionMode: schema` to isolate plugins using PostgreSQL schemas within a single database:
24+
25+
```yaml
26+
backend:
27+
database:
28+
client: pg
29+
pluginDivisionMode: schema
30+
connection:
31+
host: ${POSTGRES_HOST}
32+
port: ${POSTGRES_PORT}
33+
user: ${POSTGRES_USER}
34+
password: ${POSTGRES_PASSWORD}
35+
database: ${POSTGRES_DB}
36+
```
37+
38+
**Note:** By default, RHDH automatically creates the required schemas. If your database user lacks `CREATE SCHEMA` privileges, add `ensureSchemaExists: false` to the database configuration and ensure all required schemas are created upfront by your database administrator.
39+
40+
### Verification
41+
42+
After RHDH starts with `pluginDivisionMode: schema`, verify schemas were created:
43+
44+
**Connect to PostgreSQL:**
45+
```bash
46+
psql -U postgres
47+
```
48+
49+
**List all schemas:**
50+
```sql
51+
\dn
52+
```
53+
54+
**Expected output:** Should show schemas named after plugin IDs:
55+
```
56+
List of schemas
57+
Name | Owner
58+
--------+-------------------
59+
adoption-insights | postgres
60+
app | postgres
61+
auth | postgres
62+
catalog | postgres
63+
dynamic-plugins-info | postgres
64+
events | postgres
65+
extensions | postgres
66+
healthcheck | postgres
67+
licensed-users-info | postgres
68+
permission | postgres
69+
proxy | postgres
70+
public | pg_database_owner
71+
scaffolder | postgres
72+
scalprum | postgres
73+
search | postgres
74+
techdocs | postgres
75+
translations | postgres
76+
user-settings | postgres
77+
(18 rows)
78+
```
79+
80+
**Verify tables are in schemas:**
81+
```sql
82+
\dt catalog.*
83+
\dt scaffolder.*
84+
\dt auth.*
85+
```

docs/e2e-tests/CI.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,11 @@ The nightly job for the `main` branch also runs against three OpenShift Containe
100100

101101
Localization tests verify that the RHDH UI displays correctly translated strings for supported languages. These tests run as part of the OCP Helm nightly job.
102102

103-
- **Supported Languages:** French (fr), Italian (it), and Japanese (ja)
103+
- **Supported Languages:** German (de), Spanish (es), French (fr), Italian (it), and Japanese (ja)
104104
- **When They Run:** Localization tests run at the end of the OCP nightly job, after standard deployment tests, runtime config tests, and sanity plugin checks.
105105
- **Skip Condition:** Localization tests are **skipped for OSD-GCP jobs** due to environment constraints.
106106
- **Reuses Existing Deployment:** The tests run against the same RHDH instance deployed for standard tests, so no additional deployment is needed.
107-
- **Playwright Projects:** `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja`
107+
- **Playwright Projects:** `showcase-localization-de`, `showcase-localization-es`, `showcase-localization-fr`, `showcase-localization-it`, `showcase-localization-ja`
108108

109109
The localization test implementation is in `.ci/pipelines/jobs/ocp-nightly.sh` (`run_localization_tests()` function).
110110

e2e-tests/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"showcase-upgrade": "playwright test --project=showcase-upgrade",
1818
"showcase-auth-providers": "playwright test --project=showcase-auth-providers",
1919
"showcase-sanity-plugins": "playwright test --project=showcase-sanity-plugins",
20+
"showcase-localization-de": "LOCALE=de playwright test --project=showcase-localization-de",
21+
"showcase-localization-es": "LOCALE=es playwright test --project=showcase-localization-es",
2022
"showcase-localization-fr": "LOCALE=fr playwright test --project=showcase-localization-fr",
2123
"showcase-localization-it": "LOCALE=it playwright test --project=showcase-localization-it",
2224
"showcase-localization-ja": "LOCALE=ja playwright test --project=showcase-localization-ja",
@@ -61,7 +63,7 @@
6163
"prettier-plugin-sh": "0.18.0",
6264
"uuid": "11.1.0",
6365
"winston": "3.14.2",
64-
"yaml": "2.8.2"
66+
"yaml": "2.8.3"
6567
},
6668
"jest": {
6769
"testTimeout": 20000

0 commit comments

Comments
 (0)