mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-23 14:15:13 +00:00
This commit is contained in:
parent
6b06ab201e
commit
b4d3ebf472
@ -282,7 +282,8 @@ export function getLocation (base, mode) {
|
||||
if (mode === 'hash') {
|
||||
return window.location.hash.replace(/^#\//, '')
|
||||
}
|
||||
if (base && path.indexOf(base) === 0) {
|
||||
// To get matched with sanitized router.base add trailing slash
|
||||
if (base && (path.endsWith('/') ? path : path + '/').startsWith(base)) {
|
||||
path = path.slice(base.length)
|
||||
}
|
||||
return (path || '/') + window.location.search + window.location.hash
|
||||
|
71
test/e2e/spa-base.browser.test.js
Normal file
71
test/e2e/spa-base.browser.test.js
Normal file
@ -0,0 +1,71 @@
|
||||
import Browser from '../utils/browser'
|
||||
import { loadFixture, getPort, Nuxt } from '../utils'
|
||||
|
||||
let port
|
||||
const browser = new Browser()
|
||||
const url = route => 'http://localhost:' + port + route
|
||||
|
||||
let nuxt = null
|
||||
let page = null
|
||||
|
||||
describe('spa router base browser', () => {
|
||||
beforeAll(async () => {
|
||||
const config = await loadFixture('spa-base')
|
||||
nuxt = new Nuxt(config)
|
||||
await nuxt.ready()
|
||||
|
||||
port = await getPort()
|
||||
await nuxt.server.listen(port, 'localhost')
|
||||
|
||||
await browser.start({
|
||||
// slowMo: 50,
|
||||
// headless: false
|
||||
})
|
||||
})
|
||||
|
||||
test('Open /app (router base)', async () => {
|
||||
page = await browser.page(url('/app'))
|
||||
|
||||
expect(await page.evaluate(() => location.href)).toBe(url('/app'))
|
||||
|
||||
expect(await page.html()).not.toContain('This page could not be found')
|
||||
|
||||
expect(await page.evaluate(() => {
|
||||
const headings = document.evaluate("//div[text()='Hello SPA!']", document, null, XPathResult.ANY_TYPE, null)
|
||||
return headings.iterateNext()
|
||||
})).not.toBe(null)
|
||||
})
|
||||
|
||||
test('Open /app/ (router base with trailing slash)', async () => {
|
||||
page = await browser.page(url('/app/'))
|
||||
|
||||
expect(await page.evaluate(() => location.href)).toBe(url('/app/'))
|
||||
|
||||
expect(await page.html()).not.toContain('This page could not be found')
|
||||
})
|
||||
|
||||
test('Open /app/mounted', async () => {
|
||||
page = await browser.page(url('/app/mounted'))
|
||||
|
||||
expect(await page.$text('h1')).toMatch('Test: updated')
|
||||
})
|
||||
|
||||
test('/app/unknown', async () => {
|
||||
page = await browser.page(url('/app/unknown'))
|
||||
|
||||
expect(await page.evaluate(() => location.href)).toBe(url('/app/unknown'))
|
||||
|
||||
expect(await page.html()).toContain('This page could not be found')
|
||||
})
|
||||
|
||||
// Close server and ask nuxt to stop listening to file changes
|
||||
afterAll(async () => {
|
||||
await nuxt.close()
|
||||
})
|
||||
|
||||
// Stop browser
|
||||
afterAll(async () => {
|
||||
await page.close()
|
||||
await browser.close()
|
||||
})
|
||||
})
|
13
test/fixtures/spa-base/nuxt.config.js
vendored
Normal file
13
test/fixtures/spa-base/nuxt.config.js
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
import { resolve } from 'path'
|
||||
import defaultsDeep from 'lodash/defaultsDeep'
|
||||
import baseNuxtConfig from '../spa/nuxt.config'
|
||||
|
||||
const config = {
|
||||
buildDir: resolve(__dirname, '.nuxt'),
|
||||
srcDir: resolve(__dirname, '..', 'spa'),
|
||||
router: {
|
||||
base: '/app'
|
||||
}
|
||||
}
|
||||
|
||||
export default defaultsDeep(config, baseNuxtConfig)
|
1
test/fixtures/spa/spa.test.js
vendored
1
test/fixtures/spa/spa.test.js
vendored
@ -4,3 +4,4 @@ import { buildFixture } from '../../utils/build'
|
||||
// That's why building both from same test file.
|
||||
buildFixture('spa')
|
||||
buildFixture('spa-hash')
|
||||
buildFixture('spa-base')
|
||||
|
Loading…
Reference in New Issue
Block a user