diff --git a/packages/react/test-app/Pages/DeepMergeProps.tsx b/packages/react/test-app/Pages/DeepMergeProps.tsx
index e6dad4f79..bd01cbed3 100644
--- a/packages/react/test-app/Pages/DeepMergeProps.tsx
+++ b/packages/react/test-app/Pages/DeepMergeProps.tsx
@@ -24,7 +24,7 @@ export default ({ bar, foo, baz }: PageProps) => {
const getFresh = () => {
setPage(0)
- router.reload({
+ router.visit('/deep-merge-props', {
reset: ['foo', 'baz'],
})
}
diff --git a/packages/react/test-app/Pages/DeferredProps/WithQueryParams.tsx b/packages/react/test-app/Pages/DeferredProps/WithQueryParams.tsx
new file mode 100644
index 000000000..c736eab17
--- /dev/null
+++ b/packages/react/test-app/Pages/DeferredProps/WithQueryParams.tsx
@@ -0,0 +1,21 @@
+import { Deferred, usePage } from '@inertiajs/react'
+
+const Users = () => {
+ const { users } = usePage<{ users?: { text: string } }>().props
+
+ return
{users?.text}
+}
+
+export default () => {
+ const { filter } = usePage<{ filter: string }>().props
+
+ return (
+ <>
+ Filter: {filter}
+
+ Loading users...}>
+
+
+ >
+ )
+}
diff --git a/packages/react/test-app/Pages/MatchPropsOnKey.tsx b/packages/react/test-app/Pages/MatchPropsOnKey.tsx
index 86d5f8a5c..a04e6cb9a 100644
--- a/packages/react/test-app/Pages/MatchPropsOnKey.tsx
+++ b/packages/react/test-app/Pages/MatchPropsOnKey.tsx
@@ -26,7 +26,7 @@ export default ({ bar, foo, baz }: PageProps) => {
const [page, setPage] = useState(foo.page)
const reloadIt = () => {
- router.reload({
+ router.visit('/match-props-on-key', {
data: {
page,
},
@@ -39,7 +39,7 @@ export default ({ bar, foo, baz }: PageProps) => {
const getFresh = () => {
setPage(0)
- router.reload({
+ router.visit('/match-props-on-key', {
reset: ['foo', 'baz'],
})
}
diff --git a/packages/svelte/test-app/Pages/DeepMergeProps.svelte b/packages/svelte/test-app/Pages/DeepMergeProps.svelte
index 465d99902..ff728b3d8 100644
--- a/packages/svelte/test-app/Pages/DeepMergeProps.svelte
+++ b/packages/svelte/test-app/Pages/DeepMergeProps.svelte
@@ -21,7 +21,7 @@
const getFresh = () => {
page = 0
- router.reload({
+ router.visit('/deep-merge-props', {
reset: ['foo', 'baz'],
})
}
diff --git a/packages/svelte/test-app/Pages/DeferredProps/WithQueryParams.svelte b/packages/svelte/test-app/Pages/DeferredProps/WithQueryParams.svelte
new file mode 100644
index 000000000..742864c1f
--- /dev/null
+++ b/packages/svelte/test-app/Pages/DeferredProps/WithQueryParams.svelte
@@ -0,0 +1,15 @@
+
+
+Filter: {filter}
+
+
+
+ Loading users...
+
+ {users?.text}
+
diff --git a/packages/svelte/test-app/Pages/MatchPropsOnKey.svelte b/packages/svelte/test-app/Pages/MatchPropsOnKey.svelte
index 9b0998943..c33e9693a 100644
--- a/packages/svelte/test-app/Pages/MatchPropsOnKey.svelte
+++ b/packages/svelte/test-app/Pages/MatchPropsOnKey.svelte
@@ -21,7 +21,7 @@
let page = foo.page
const reloadIt = () => {
- router.reload({
+ router.visit('/match-props-on-key', {
data: {
page,
},
@@ -35,7 +35,7 @@
const getFresh = () => {
page = 0
- router.reload({
+ router.visit('/match-props-on-key', {
reset: ['foo', 'baz'],
})
}
diff --git a/packages/vue3/test-app/Pages/DeepMergeProps.vue b/packages/vue3/test-app/Pages/DeepMergeProps.vue
index de0bb3784..8b1f0e7c4 100644
--- a/packages/vue3/test-app/Pages/DeepMergeProps.vue
+++ b/packages/vue3/test-app/Pages/DeepMergeProps.vue
@@ -34,7 +34,7 @@ const reloadIt = () => {
const getFresh = () => {
page.value = 0
- router.reload({
+ router.visit('/deep-merge-props', {
reset: ['foo', 'baz'],
})
}
diff --git a/packages/vue3/test-app/Pages/DeferredProps/WithQueryParams.vue b/packages/vue3/test-app/Pages/DeferredProps/WithQueryParams.vue
new file mode 100644
index 000000000..2696b5ccf
--- /dev/null
+++ b/packages/vue3/test-app/Pages/DeferredProps/WithQueryParams.vue
@@ -0,0 +1,19 @@
+
+
+
+ Filter: {{ filter }}
+
+
+
+ Loading users...
+
+ {{ users?.text }}
+
+
diff --git a/packages/vue3/test-app/Pages/MatchPropsOnKey.vue b/packages/vue3/test-app/Pages/MatchPropsOnKey.vue
index f4742c676..268df3735 100644
--- a/packages/vue3/test-app/Pages/MatchPropsOnKey.vue
+++ b/packages/vue3/test-app/Pages/MatchPropsOnKey.vue
@@ -21,7 +21,7 @@ const props = defineProps()
const page = ref(props.foo.page)
const reloadIt = () => {
- router.reload({
+ router.visit('/match-props-on-key', {
data: {
page: page.value,
},
@@ -36,7 +36,7 @@ const reloadIt = () => {
const getFresh = () => {
page.value = 0
- router.reload({
+ router.visit('/match-props-on-key', {
reset: ['foo', 'baz'],
})
}
diff --git a/tests/app/helpers.js b/tests/app/helpers.js
index d71d3b7a6..f2a67bb1b 100644
--- a/tests/app/helpers.js
+++ b/tests/app/helpers.js
@@ -16,21 +16,16 @@ module.exports = {
.map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
.join(''),
props: {},
- // TODO: url should be req.originalUrl as that includes the query string
- url: req.path,
+ url: req.originalUrl,
version: null,
...data,
}
- if (data.component.startsWith('InfiniteScroll')) {
+ if (data.component.startsWith('InfiniteScroll') && req.query.absolutePageUrl) {
// Support absolute URL format for testing URL preservation
- if (req.query.absolutePageUrl) {
- const protocol = req.protocol
- const host = req.get('host')
- data.url = `${protocol}://${host}${req.originalUrl}`
- } else {
- data.url = req.originalUrl
- }
+ const protocol = req.protocol
+ const host = req.get('host')
+ data.url = `${protocol}://${host}${req.originalUrl}`
}
const partialDataHeader = req.headers['x-inertia-partial-data'] || ''
diff --git a/tests/app/server.js b/tests/app/server.js
index da1d0c1c5..1234d5461 100644
--- a/tests/app/server.js
+++ b/tests/app/server.js
@@ -758,6 +758,34 @@ app.get('/deferred-props/instant-reload', (req, res) => {
)
})
+app.get('/deferred-props/with-query-params', (req, res) => {
+ const filter = req.query.filter || 'none'
+ const requestedProps = req.headers['x-inertia-partial-data']
+
+ if (!requestedProps) {
+ return inertia.render(req, res, {
+ component: 'DeferredProps/WithQueryParams',
+ deferredProps: {
+ default: ['users'],
+ },
+ props: {
+ filter,
+ },
+ })
+ }
+
+ setTimeout(
+ () =>
+ inertia.render(req, res, {
+ component: 'DeferredProps/WithQueryParams',
+ props: {
+ users: requestedProps.includes('users') ? { text: `users data for ${filter}` } : undefined,
+ },
+ }),
+ 500,
+ )
+})
+
app.get('/svelte/props-and-page-store', (req, res) =>
inertia.render(req, res, { component: 'Svelte/PropsAndPageStore', props: { foo: req.query.foo || 'default' } }),
)
diff --git a/tests/deep-merge-props.spec.ts b/tests/deep-merge-props.spec.ts
index e83b37d0d..b91b457e4 100644
--- a/tests/deep-merge-props.spec.ts
+++ b/tests/deep-merge-props.spec.ts
@@ -29,7 +29,7 @@ test('can deep merge props', async ({ page }) => {
await expect(page.getByText('foo.per_page is 5')).toBeVisible()
await expect(page.getByText('foo.meta.label is third')).toBeVisible()
- await clickAndWaitForResponse(page, 'Get Fresh', null, 'button')
+ await clickAndWaitForResponse(page, 'Get Fresh', '/deep-merge-props', 'button')
await expect(page.getByText('bar count is 5')).toBeVisible()
await expect(page.getByText('baz count is 5')).toBeVisible()
diff --git a/tests/deferred-props.spec.ts b/tests/deferred-props.spec.ts
index c6c7c6a56..76b2dec8a 100644
--- a/tests/deferred-props.spec.ts
+++ b/tests/deferred-props.spec.ts
@@ -197,3 +197,26 @@ test('load deferred props with partial reload on mount', async ({ page }) => {
await expect(page.getByText('foo value')).toBeVisible()
await expect(page.getByText('bar value')).toBeVisible()
})
+
+test('deferred props preserve query parameters from original URL', async ({ page }) => {
+ await page.goto('/deferred-props/with-query-params?filter=a')
+
+ // Verify the initial page load has the correct filter
+ await expect(page.getByText('Filter: a')).toBeVisible()
+ await expect(page.getByText('Loading users...')).toBeVisible()
+
+ // Wait for and capture the deferred props request
+ const deferredRequest = await page.waitForResponse((response) => {
+ const url = response.url()
+ const headers = response.request().headers()
+ return headers['x-inertia-partial-data'] === 'users' && url.includes('/deferred-props/with-query-params')
+ })
+
+ // Assert that the deferred props request includes the query parameter
+ const requestUrl = deferredRequest.url()
+ expect(requestUrl).toContain('filter=a')
+
+ // Verify the deferred data uses the correct filter
+ await expect(page.getByText('Loading users...')).not.toBeVisible()
+ await expect(page.getByText('users data for a')).toBeVisible()
+})
diff --git a/tests/form-component.spec.ts b/tests/form-component.spec.ts
index a1aecddb8..2e197664c 100644
--- a/tests/form-component.spec.ts
+++ b/tests/form-component.spec.ts
@@ -441,7 +441,7 @@ test.describe('Form Component', () => {
expect(scrollBefore).toBeGreaterThan(0)
await page.getByRole('button', { name: 'Submit' }).click()
- await page.waitForURL('/article')
+ await page.waitForURL(/\/article/)
const scrollAfter = await page.evaluate(() => window.scrollY)
// TODO: why is this not exactly 100?
diff --git a/tests/links.spec.ts b/tests/links.spec.ts
index 408e52951..eca91fd67 100644
--- a/tests/links.spec.ts
+++ b/tests/links.spec.ts
@@ -331,7 +331,7 @@ test.describe('preserve state', () => {
await expect(componentKey).not.toBeUndefined()
await page.getByRole('link', { name: label }).click()
- await expect(page).toHaveURL('/links/preserve-state-page-two')
+ await expect(page).toHaveURL(`/links/preserve-state-page-two?foo=${expected}`)
const newComponentKey = await page.evaluate(() => (window as any)._inertia_page_key)
await expect(newComponentKey).not.toBeUndefined()
@@ -365,7 +365,7 @@ test.describe('preserve state', () => {
await expect(componentKey).not.toBeUndefined()
await page.getByRole('link', { name: label }).click()
- await expect(page).toHaveURL('/links/preserve-state-page-two')
+ await expect(page).toHaveURL(`/links/preserve-state-page-two?foo=${expected}`)
// @ts-ignore
const newComponentKey = await page.evaluate(() => window._inertia_page_key)
@@ -398,7 +398,7 @@ test.describe('preserve url', () => {
const initialUrl = page.url()
await page.getByRole('link', { name: '[URL] Preserve: false' }).click()
- await expect(page).toHaveURL('/links/preserve-url-page-two')
+ await expect(page).toHaveURL('/links/preserve-url-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await expect(page.url()).not.toBe(initialUrl) // URL should have changed
})
@@ -447,7 +447,7 @@ test.describe('preserve scroll', () => {
test('does not reset untracked scroll regions in persistent layouts', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll' }).click()
- await expect(page).toHaveURL('/links/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-false-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -460,7 +460,7 @@ test.describe('preserve scroll', () => {
consoleMessages.listen(page)
await page.getByRole('link', { exact: true, name: 'Reset Scroll (Callback)' }).click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/links/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-false-page-two?foo=foo')
await expect(page.getByText('Foo is now foo')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -479,7 +479,7 @@ test.describe('preserve scroll', () => {
test('does not restore untracked scroll regions when pressing the back button', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll' }).click()
- await expect(page).toHaveURL('/links/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-false-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await scrollElementTo(
@@ -505,7 +505,7 @@ test.describe('preserve scroll', () => {
.getByRole('link', { exact: true, name: 'Preserve Scroll (Callback)' })
.click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/links/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-false-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await scrollElementTo(
@@ -567,7 +567,7 @@ test.describe('enabled', () => {
test('resets scroll regions to the top when doing a regular visit', async ({ page }) => {
await page.getByText('Reset Scroll', { exact: true }).click()
- await expect(page).toHaveURL('/links/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -578,7 +578,7 @@ test.describe('enabled', () => {
consoleMessages.listen(page)
await page.getByText('Reset Scroll (Callback)', { exact: true }).click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/links/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-page-two?foo=foo')
await expect(page.getByText('Foo is now foo')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -596,7 +596,7 @@ test.describe('enabled', () => {
test('preserves scroll regions when using the "preserve-scroll" feature', async ({ page }) => {
await page.getByText('Preserve Scroll', { exact: true }).click()
- await expect(page).toHaveURL('/links/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 5 & 7')).toBeVisible()
@@ -607,7 +607,7 @@ test.describe('enabled', () => {
consoleMessages.listen(page)
await page.getByText('Preserve Scroll (Callback)', { exact: true }).click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/links/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 5 & 7')).toBeVisible()
@@ -623,7 +623,7 @@ test.describe('enabled', () => {
test('restores all tracked scroll regions when pressing the back button', async ({ page }) => {
await page.getByTestId('preserve').click()
- await expect(page).toHaveURL('/links/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/links/preserve-scroll-page-two?foo=baz')
await page.waitForTimeout(100)
await scrollElementTo(
@@ -844,7 +844,7 @@ test.describe('partial reloads', () => {
requests.listen(page)
await page.getByRole('link', { name: 'Update All' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(requests.requests).toHaveLength(1)
@@ -858,7 +858,7 @@ test.describe('partial reloads', () => {
requests.listen(page)
await page.getByRole('link', { name: 'Only foo + bar' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(requests.requests).toHaveLength(1)
@@ -873,7 +873,7 @@ test.describe('partial reloads', () => {
test('it updates all props when the feature is not being used', async ({ page }) => {
await page.getByRole('link', { name: 'Update All' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
@@ -882,21 +882,21 @@ test.describe('partial reloads', () => {
test('it only updates props that are passed through "only"', async ({ page }) => {
await page.getByRole('link', { name: 'Only foo + bar' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
await expect(page.getByText('Baz is now 3')).toBeVisible()
await page.getByRole('link', { name: 'Only baz' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=2')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
await expect(page.getByText('Baz is now 5')).toBeVisible()
await page.getByRole('link', { name: 'Update All' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=2')
await expect(page.getByText('Foo is now 3')).toBeVisible()
await expect(page.getByText('Bar is now 4')).toBeVisible()
@@ -905,14 +905,14 @@ test.describe('partial reloads', () => {
test('it only updates props that are not passed through "except"', async ({ page }) => {
await page.getByRole('link', { name: 'Except foo + bar' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 1')).toBeVisible()
await expect(page.getByText('Bar is now 2')).toBeVisible()
await expect(page.getByText('Baz is now 4')).toBeVisible()
await page.getByRole('link', { name: 'Except baz' }).click()
- await expect(page).toHaveURL('/links/partial-reloads')
+ await expect(page).toHaveURL('/links/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
diff --git a/tests/manual-visits.spec.ts b/tests/manual-visits.spec.ts
index b63e00e1f..c0b4548f0 100644
--- a/tests/manual-visits.spec.ts
+++ b/tests/manual-visits.spec.ts
@@ -381,7 +381,7 @@ test.describe('Preserve state', () => {
await expect(componentKey).not.toBeUndefined()
await page.getByRole('link', { name: label }).click()
- await expect(page).toHaveURL('/visits/preserve-state-page-two')
+ await expect(page).toHaveURL(`/visits/preserve-state-page-two?foo=${expected}`)
const newComponentKey = await page.evaluate(() => (window as any)._inertia_page_key)
await expect(newComponentKey).not.toBeUndefined()
@@ -419,7 +419,7 @@ test.describe('Preserve state', () => {
await expect(componentKey).not.toBeUndefined()
await page.getByRole('link', { name: label }).click()
- await expect(page).toHaveURL('/visits/preserve-state-page-two')
+ await expect(page).toHaveURL(`/visits/preserve-state-page-two?foo=${expected}`)
const newComponentKey = await page.evaluate(() => (window as any)._inertia_page_key)
await expect(newComponentKey).not.toBeUndefined()
@@ -452,7 +452,7 @@ test.describe('Preserve scroll', () => {
test('does not reset untracked scroll regions in persistent layouts (visit method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -461,7 +461,7 @@ test.describe('Preserve scroll', () => {
test('does not reset untracked scroll regions in persistent layouts (GET method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll (GET)' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -476,7 +476,7 @@ test.describe('Preserve scroll', () => {
await page
.getByRole('link', { exact: true, name: 'Reset Scroll (Callback)' })
.click({ position: { x: 20, y: 0 } })
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=foo')
await expect(page.getByText('Foo is now foo')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -495,7 +495,7 @@ test.describe('Preserve scroll', () => {
test('does not restore untracked scroll regions when pressing the back button (visit method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await scrollElementTo(
@@ -518,7 +518,7 @@ test.describe('Preserve scroll', () => {
test('does not restore untracked scroll regions when pressing the back button (GET method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll (GET)' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await scrollElementTo(
@@ -545,7 +545,7 @@ test.describe('Preserve scroll', () => {
await page.getByRole('link', { name: 'Preserve Scroll (Callback)' }).click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-false-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await scrollElementTo(
@@ -611,7 +611,7 @@ test.describe('Preserve scroll', () => {
test('resets scroll regions to the top when doing a regular visit (visit method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -620,7 +620,7 @@ test.describe('Preserve scroll', () => {
test('resets scroll regions to the top when doing a regular visit (GET method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Reset Scroll (GET)' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -633,7 +633,7 @@ test.describe('Preserve scroll', () => {
.getByRole('link', { exact: true, name: 'Reset Scroll (Callback)' })
.click({ position: { x: 20, y: 0 } })
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=foo')
await expect(page.getByText('Foo is now foo')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 0 & 0')).toBeVisible()
@@ -651,7 +651,7 @@ test.describe('Preserve scroll', () => {
test('preserves scroll regions when using the "preserve-scroll" feature (visit method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Preserve Scroll' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=foo')
await expect(page.getByText('Foo is now foo')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 5 & 7')).toBeVisible()
@@ -661,7 +661,7 @@ test.describe('Preserve scroll', () => {
test('preserves scroll regions when using the "preserve-scroll" feature (GET method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Preserve Scroll (GET)' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=bar')
await expect(page.getByText('Foo is now bar')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 5 & 7')).toBeVisible()
@@ -674,7 +674,7 @@ test.describe('Preserve scroll', () => {
.getByRole('link', { exact: true, name: 'Preserve Scroll (Callback)' })
.click({ position: { x: 0, y: 0 } })
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=baz')
await expect(page.getByText('Foo is now baz')).toBeVisible()
await page.getByRole('button', { exact: true, name: 'Update scroll positions' }).click()
await expect(page.getByText('Document scroll position is 5 & 7')).toBeVisible()
@@ -690,7 +690,7 @@ test.describe('Preserve scroll', () => {
test('restores all tracked scroll regions when pressing the back button (visit method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Preserve Scroll' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=foo')
await page.waitForTimeout(100)
await scrollElementTo(
@@ -711,7 +711,7 @@ test.describe('Preserve scroll', () => {
test('restores all tracked scroll regions when pressing the back button (GET method)', async ({ page }) => {
await page.getByRole('link', { exact: true, name: 'Preserve Scroll (GET)' }).click()
- await expect(page).toHaveURL('/visits/preserve-scroll-page-two')
+ await expect(page).toHaveURL('/visits/preserve-scroll-page-two?foo=bar')
await page.waitForTimeout(100)
await scrollElementTo(
@@ -801,7 +801,7 @@ test.describe('Partial Reloads', () => {
requests.listen(page)
await page.getByRole('link', { name: `Update All (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(requests.requests).toHaveLength(1)
@@ -815,7 +815,7 @@ test.describe('Partial Reloads', () => {
requests.listen(page)
await page.getByRole('link', { name: `'Only' foo + bar (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(requests.requests).toHaveLength(1)
@@ -832,7 +832,7 @@ test.describe('Partial Reloads', () => {
requests.listen(page)
await page.getByRole('link', { name: `'Except' foo + bar (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(requests.requests).toHaveLength(1)
@@ -847,7 +847,7 @@ test.describe('Partial Reloads', () => {
test(`it updates all props when the feature is not being used (${label})`, async ({ page }) => {
await page.getByRole('link', { name: `Update All (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
@@ -857,21 +857,21 @@ test.describe('Partial Reloads', () => {
test(`it only updates props that are passed through "only" (${label})`, async ({ page }) => {
await page.getByRole('link', { name: `'Only' foo + bar (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
await expect(page.getByText('Baz is now 3')).toBeVisible()
await page.getByRole('link', { name: `'Only' baz (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=2')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
await expect(page.getByText('Baz is now 5')).toBeVisible()
await page.getByRole('link', { name: `Update All (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=2')
await expect(page.getByText('Foo is now 3')).toBeVisible()
await expect(page.getByText('Bar is now 4')).toBeVisible()
@@ -880,14 +880,14 @@ test.describe('Partial Reloads', () => {
test(`it only updates props that are not passed through "except" (${label})`, async ({ page }) => {
await page.getByRole('link', { name: `'Except' foo + bar (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 1')).toBeVisible()
await expect(page.getByText('Bar is now 2')).toBeVisible()
await expect(page.getByText('Baz is now 4')).toBeVisible()
await page.getByRole('link', { name: `'Except' baz (${label})` }).click()
- await expect(page).toHaveURL('/visits/partial-reloads')
+ await expect(page).toHaveURL('/visits/partial-reloads?foo=1')
await expect(page.getByText('Foo is now 2')).toBeVisible()
await expect(page.getByText('Bar is now 3')).toBeVisible()
diff --git a/tests/merge-props.spec.ts b/tests/merge-props.spec.ts
index 6617c3f8a..c91db615c 100644
--- a/tests/merge-props.spec.ts
+++ b/tests/merge-props.spec.ts
@@ -34,12 +34,12 @@ test('can append to nested props', async ({ page }) => {
await expect(page.getByText('User 1, User 2, User 3')).toBeVisible()
await expect(page.getByText('Page: 1, Per Page: 3')).toBeVisible()
- await clickAndWaitForResponse(page, 'Load More', page.url() + '?page=2', 'button')
+ await clickAndWaitForResponse(page, 'Load More', '/merge-nested-props/append?page=2', 'button')
await expect(page.getByText('User 1, User 2, User 3, User 4, User 5, User 6')).toBeVisible()
await expect(page.getByText('Page: 2, Per Page: 3')).toBeVisible()
- await clickAndWaitForResponse(page, 'Load More', page.url() + '?page=3', 'button')
+ await clickAndWaitForResponse(page, 'Load More', '/merge-nested-props/append?page=3', 'button')
await expect(page.getByText('User 1, User 2, User 3, User 4, User 5, User 6, User 7, User 8, User 9')).toBeVisible()
await expect(page.getByText('Page: 3, Per Page: 3')).toBeVisible()
@@ -51,12 +51,12 @@ test('can prepend to nested props', async ({ page }) => {
await expect(page.getByText('User 3, User 2, User 1')).toBeVisible()
await expect(page.getByText('Page: 1, Per Page: 3')).toBeVisible()
- await clickAndWaitForResponse(page, 'Load More', page.url() + '?page=2', 'button')
+ await clickAndWaitForResponse(page, 'Load More', '/merge-nested-props/prepend?page=2', 'button')
await expect(page.getByText('User 6, User 5, User 4, User 3, User 2, User 1')).toBeVisible()
await expect(page.getByText('Page: 2, Per Page: 3')).toBeVisible()
- await clickAndWaitForResponse(page, 'Load More', page.url() + '?page=3', 'button')
+ await clickAndWaitForResponse(page, 'Load More', '/merge-nested-props/prepend?page=3', 'button')
await expect(page.getByText('User 9, User 8, User 7, User 6, User 5, User 4, User 3, User 2, User 1')).toBeVisible()
await expect(page.getByText('Page: 3, Per Page: 3')).toBeVisible()
diff --git a/tests/support.ts b/tests/support.ts
index bae7d4abb..29b7c6498 100644
--- a/tests/support.ts
+++ b/tests/support.ts
@@ -56,7 +56,7 @@ export const requests = {
}
export const shouldBeDumpPage = async (page: Page, method: 'get' | 'post' | 'patch' | 'put' | 'delete') => {
- await expect(page).toHaveURL(`dump/${method}`)
+ await expect(page).toHaveURL(new RegExp(`dump/${method}`))
// @ts-ignore
const dump = await page.evaluate(() => window._inertia_request_dump)
await expect(dump).not.toBeNull()
diff --git a/tests/svelte.spec.ts b/tests/svelte.spec.ts
index fba22eab0..1c51c16b1 100644
--- a/tests/svelte.spec.ts
+++ b/tests/svelte.spec.ts
@@ -74,7 +74,7 @@ test('props and page store are in sync', async ({ page }) => {
await page.waitForURL('/')
await page.goBack()
- await page.waitForURL('/svelte/props-and-page-store')
+ await page.waitForURL('/svelte/props-and-page-store?foo=baz')
consoleMessages.messages = []
await expect(page.getByText('foo prop is baz')).toBeVisible()
diff --git a/tests/when-visible.spec.ts b/tests/when-visible.spec.ts
index 5fb504392..e78de9fe6 100644
--- a/tests/when-visible.spec.ts
+++ b/tests/when-visible.spec.ts
@@ -72,7 +72,7 @@ test('it will wait to fire the reload until element is visible', async ({ page }
await page.evaluate(() => (window as any).scrollTo(0, 26_000))
await expect(page.getByText('Loading fifth one...')).toBeVisible()
- await page.waitForResponse(page.url() + '?count=0')
+ await page.waitForResponse('/when-visible?count=0')
await expect(page.getByText('Loading fifth one...')).not.toBeVisible()
await expect(page.getByText('Count is now 1')).toBeVisible()
@@ -82,6 +82,6 @@ test('it will wait to fire the reload until element is visible', async ({ page }
await page.evaluate(() => (window as any).scrollTo(0, 26_000))
await expect(page.getByText('Count is now 1')).toBeVisible()
- await page.waitForResponse(page.url() + '?count=1')
+ await page.waitForResponse('/when-visible?count=1')
await expect(page.getByText('Count is now 2')).toBeVisible()
})