@@ -14,6 +14,14 @@ function uniqueTitle(prefix) {
1414 return `${ prefix } ${ suffix } ` ;
1515}
1616
17+ const APP_URL = process . env . E2E_APP_URL || "http://localhost:3001" ;
18+
19+ async function visit ( page , path = "/" ) {
20+ const url = path === "/" ? APP_URL : `${ APP_URL } ${ path } ` ;
21+ await page . goto ( url , { waitUntil : "load" } ) ;
22+ await waitForAppToLoad ( page ) ;
23+ }
24+
1725// Helper function to wait for React app to load
1826async function waitForAppToLoad ( page ) {
1927 // Listen for console errors
@@ -35,8 +43,7 @@ async function waitForAppToLoad(page) {
3543
3644test . describe ( "Dashboard - Time is on our side" , ( ) => {
3745 test ( "shows the live server time ticking away" , async ( { page } ) => {
38- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
39- await waitForAppToLoad ( page ) ;
46+ await visit ( page ) ;
4047
4148 // Check that we're on the dashboard
4249 await expect ( page . getByTestId ( "tab-dashboard" ) ) . toHaveAttribute (
@@ -54,8 +61,7 @@ test.describe("Dashboard - Time is on our side", () => {
5461 } ) ;
5562
5663 test ( "displays server date from API" , async ( { page } ) => {
57- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
58- await waitForAppToLoad ( page ) ;
64+ await visit ( page ) ;
5965
6066 // The server knows what day it is!
6167 const dateElement = page . getByTestId ( "server-date" ) ;
@@ -77,10 +83,7 @@ test.describe("Dashboard - Time is on our side", () => {
7783
7884test . describe ( "Task Management - Getting stuff done" , ( ) => {
7985 test . beforeEach ( async ( { page } ) => {
80- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
81- await waitForAppToLoad ( page ) ;
82- // Navigate to Tasks tab
83- await page . getByTestId ( "tab-tasks" ) . click ( ) ;
86+ await visit ( page , "/tasks" ) ;
8487 await expect ( page . getByTestId ( "tab-tasks" ) ) . toHaveAttribute (
8588 "aria-selected" ,
8689 "true"
@@ -252,8 +255,7 @@ test.describe("Task Management - Getting stuff done", () => {
252255
253256test . describe ( "Navigation - Exploring the app" , ( ) => {
254257 test ( "navigates between tabs smoothly" , async ( { page } ) => {
255- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
256- await waitForAppToLoad ( page ) ;
258+ await visit ( page ) ;
257259
258260 // Start on Dashboard
259261 await expect ( page . getByTestId ( "tab-dashboard" ) ) . toHaveAttribute (
@@ -286,14 +288,35 @@ test.describe("Navigation - Exploring the app", () => {
286288 } ) ;
287289
288290 test ( "shows the awesome project title" , async ( { page } ) => {
289- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
290- await waitForAppToLoad ( page ) ;
291+ await visit ( page ) ;
291292
292293 // Our glorious header should be visible
293294 await expect (
294295 page . getByText ( "Quart + React Demo Application" )
295296 ) . toBeVisible ( ) ;
296297 } ) ;
298+
299+ test ( "supports direct URL navigation for each tab" , async ( { page } ) => {
300+ await visit ( page , "/tasks" ) ;
301+ await expect ( page . getByTestId ( "tab-tasks" ) ) . toHaveAttribute (
302+ "aria-selected" ,
303+ "true"
304+ ) ;
305+ await expect ( page . getByText ( "Task Management" ) ) . toBeVisible ( ) ;
306+
307+ await visit ( page , "/about" ) ;
308+ await expect ( page . getByTestId ( "tab-about" ) ) . toHaveAttribute (
309+ "aria-selected" ,
310+ "true"
311+ ) ;
312+ await expect ( page . getByText ( "About This Project" ) ) . toBeVisible ( ) ;
313+
314+ await visit ( page , "/dashboard" ) ;
315+ await expect ( page . getByTestId ( "tab-dashboard" ) ) . toHaveAttribute (
316+ "aria-selected" ,
317+ "true"
318+ ) ;
319+ } ) ;
297320} ) ;
298321
299322// ============================================================================
@@ -302,9 +325,7 @@ test.describe("Navigation - Exploring the app", () => {
302325
303326test . describe ( "About Page - All the good info" , ( ) => {
304327 test . beforeEach ( async ( { page } ) => {
305- await page . goto ( "http://localhost:3001" , { waitUntil : "load" } ) ;
306- await waitForAppToLoad ( page ) ;
307- await page . getByTestId ( "tab-about" ) . click ( ) ;
328+ await visit ( page , "/about" ) ;
308329 } ) ;
309330
310331 test ( "displays project information" , async ( { page } ) => {
0 commit comments