e2e/README.md
This directory contains end-to-end (E2E) UI tests and related CI entrypoints.
e2e/portal-e2e@smoke: core user journeys@regression: extended scenariosCurrent cases:
login flow works @smokecreate app flow works @smokecreate item and first release works @smokeupdate item and second release works @smokerollback latest release works @smokerelease history contains publish and rollback records @smokeduplicate app creation is rejected @regressioncluster and namespace pages support creation flow @regressionconfig export and instance view paths are reachable @regressionpublished, gray published and rolled back configs are readable from config service @regressionproperties, yaml and json namespaces are readable from config service @regressionnamespace role page supports grant and revoke operations @regressiontext mode edit and publish are readable from config service @regressionlinked public namespace supports association and override @regressiongrayscale ui supports create rule publish merge and discard @regressionHigh-priority user-guide coverage (via portal-priority.spec.js):
Config Service full-chain coverage (via portal-configservice.spec.js):
Covered controllers:
ConfigController (/configs/**)ConfigFileController (/configfiles/**)NotificationControllerV2 (/notifications/v2)Covered behaviors:
properties, yaml, and json are all verifiable via Config Service APIs.e2e/portal-e2e@auth-matrix: auth matrix scenarios (runs separately from @smoke|@regression)ldap: OpenLDAP + group filter (memberUid) login checksoidc: Keycloak OIDC interactive login checksCovered behaviors:
Notes:
camelCase keys under ldap.mapping and ldap.group (for example objectClass, loginId, groupSearch) to match the runtime placeholders.firstName, lastName, and emailVerified=true to avoid Keycloak VERIFY_PROFILE redirect during first login.OidcLocalUserService behavior).cd e2e/portal-e2e
npm ci
npx playwright install --with-deps chromium
BASE_URL=http://127.0.0.1:8070 npm run test:e2e
CI mode command:
cd e2e/portal-e2e
BASE_URL=http://127.0.0.1:8070 npm run test:e2e:ci
Run only Config Service full-chain regression:
cd e2e/portal-e2e
BASE_URL=http://127.0.0.1:8070 npm run test:e2e:ci -- tests/portal-configservice.spec.js
Run Portal auth matrix in LDAP mode:
cd /path/to/apollo
./e2e/portal-e2e/scripts/auth/setup-ldap.sh
SPRING_PROFILES_ACTIVE=github,database-discovery,ldap \
SPRING_SQL_CONFIG_INIT_MODE=always \
SPRING_SQL_PORTAL_INIT_MODE=always \
SPRING_CONFIG_DATASOURCE_URL="jdbc:h2:mem:apollo-config-db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;BUILTIN_ALIAS_OVERRIDE=TRUE;DATABASE_TO_UPPER=FALSE" \
SPRING_PORTAL_DATASOURCE_URL="jdbc:h2:mem:apollo-portal-db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;BUILTIN_ALIAS_OVERRIDE=TRUE;DATABASE_TO_UPPER=FALSE" \
SPRING_CONFIG_ADDITIONAL_LOCATION="file:/path/to/apollo/e2e/portal-e2e/config/application-ldap-e2e.yml" \
java -jar /path/to/apollo/apollo-assembly/target/apollo-assembly-*.jar
cd e2e/portal-e2e
npm ci
npx playwright install --with-deps chromium
PORTAL_AUTH_MODE=ldap BASE_URL=http://127.0.0.1:8070 npm run test:e2e:auth-matrix
cd /path/to/apollo
./e2e/portal-e2e/scripts/auth/teardown-auth.sh
Run Portal auth matrix in OIDC mode:
cd /path/to/apollo
./e2e/portal-e2e/scripts/auth/setup-oidc.sh
SPRING_PROFILES_ACTIVE=github,database-discovery,oidc \
SPRING_SQL_CONFIG_INIT_MODE=always \
SPRING_SQL_PORTAL_INIT_MODE=always \
SPRING_CONFIG_DATASOURCE_URL="jdbc:h2:mem:apollo-config-db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;BUILTIN_ALIAS_OVERRIDE=TRUE;DATABASE_TO_UPPER=FALSE" \
SPRING_PORTAL_DATASOURCE_URL="jdbc:h2:mem:apollo-portal-db;mode=mysql;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;BUILTIN_ALIAS_OVERRIDE=TRUE;DATABASE_TO_UPPER=FALSE" \
SPRING_CONFIG_ADDITIONAL_LOCATION="file:/path/to/apollo/e2e/portal-e2e/config/application-oidc-e2e.yml" \
java -jar /path/to/apollo/apollo-assembly/target/apollo-assembly-*.jar
cd e2e/portal-e2e
npm ci
npx playwright install --with-deps chromium
PORTAL_AUTH_MODE=oidc BASE_URL=http://127.0.0.1:8070 npm run test:e2e:auth-matrix
cd /path/to/apollo
./e2e/portal-e2e/scripts/auth/teardown-auth.sh
.github/workflows/portal-ui-e2e.ymlportal-ui-e2eapollo-portal/**apollo-assembly/**e2e/portal-e2e/**scripts/sql/**.github/workflows/portal-ui-e2e.ymlPortal auth matrix workflow:
.github/workflows/portal-login-e2e.ymlportal-login-e2e (ldap|oidc)ldapoidcapollo-portal/**apollo-assembly/**e2e/portal-e2e/**.github/workflows/portal-login-e2e.ymlid, stable attributes, deterministic CSS) over UI text.