@@ -4,8 +4,13 @@ import {
44 randomIntBetween ,
55 randomItem ,
66} from "https://jslib.k6.io/k6-utils/1.2.0/index.js"
7- import { BROWSER_CONTEXT_OPTIONS , FRONTEND_BASE_URL } from "../config.ts"
7+ import {
8+ BROWSER_CONTEXT_OPTIONS ,
9+ FRONTEND_BASE_URL ,
10+ SSO_BASE_URL ,
11+ } from "../config.ts"
812import { AuthCredential , credentials } from "../auth.ts"
13+ import { escapeRegex } from "../utils.ts"
914
1015async function home ( page : Page ) {
1116 await page . goto ( FRONTEND_BASE_URL )
@@ -47,7 +52,7 @@ async function login(page: Page) {
4752
4853 if ( ! ! credential ) {
4954 console . debug ( "Skipping login because no credentials provided" )
50- return
55+ return false
5156 }
5257
5358 const loginButton = page . getByTestId ( "login-button-desktop" )
@@ -56,12 +61,16 @@ async function login(page: Page) {
5661 await loginKeycloak ( page )
5762
5863 await page . waitForURL ( / .* \/ d a s h b o a r d .* / )
64+
65+ return true
5966}
6067
68+ const KEYCLOAK_OIDC_RE = new RegExp (
69+ `${ escapeRegex ( SSO_BASE_URL ) } \/realms\/olapps\/protocol\/openid-connect\/auth.*` ,
70+ )
71+
6172async function loginKeycloak ( page : Page , credential : AuthCredential ) {
62- await page . waitForURL (
63- / h t t p s : \/ s s o ( \- q a ) ? \. o l \. m i t \. e d u \/ r e a l m s \/ o l a p p s \/ p r o t o c o l \/ o p e n i d - c o n n e c t \/ a u t h .* / ,
64- )
73+ await page . waitForURL ( KEYCLOAK_OIDC_RE )
6574
6675 const credentialnameInput = await page . locator ( "input#username" )
6776 await credentialnameInput . type ( credential . email )
@@ -86,8 +95,10 @@ export async function testFrontend() {
8695 await topics ( page )
8796 await departments ( page )
8897 await units ( page )
89- await login ( page )
90- await dashboard ( page )
98+ const loggedIn = await login ( page )
99+ if ( loggedIn ) {
100+ await dashboard ( page )
101+ }
91102 } finally {
92103 await page . close ( )
93104 }
0 commit comments