未验证 提交 3f22490a 编写于 作者: T Tasuku Uno 提交者: GitHub

Fix browser back issue of redirects from getServerSideProps / getStaticProps (#17741)

* Fix test without expect for redirects from getStaticProps/getServerSideProps

* Fix browser back issue of redirects from getServerSideProps / getStaticProps
上级 d2e7f3c7
......@@ -813,12 +813,7 @@ export default class Router implements BaseRouter {
this._resolveHref(parsedHref, pages)
if (pages.includes(parsedHref.pathname)) {
return this.change(
'replaceState',
destination,
destination,
options
)
return this.change(method, destination, destination, options)
}
}
......
......@@ -123,6 +123,10 @@ const runTests = () => {
window.next.router.push('/gssp-blog/redirect-dest-_another')
})()`)
await browser.waitForElementByCss('#another')
const text = await browser.elementByCss('#another').text()
expect(text).toEqual('another Page')
})
it('should apply redirect when GSSP page is navigated to client-side (external)', async () => {
......@@ -149,6 +153,10 @@ const runTests = () => {
window.next.router.push('/gsp-blog/redirect-dest-_another')
})()`)
await browser.waitForElementByCss('#another')
const text = await browser.elementByCss('#another').text()
expect(text).toEqual('another Page')
})
it('should apply redirect when GSP page is navigated to client-side (external)', async () => {
......@@ -167,6 +175,94 @@ const runTests = () => {
},
})
})
it('should not replace history of the origin page when GSSP page is navigated to client-side (internal normal)', async () => {
const browser = await webdriver(appPort, '/another?mark_as=root')
await browser.eval(`(function () {
window.location.href = '/'
})()`)
await browser.waitForElementByCss('#index')
await browser.eval(`(function () {
window.next.router.push('/gssp-blog/redirect-dest-_another')
})()`)
await browser.waitForElementByCss('#another')
await browser.eval(`(function () {
window.history.back()
})()`)
const curUrl = await browser.url()
const { path } = url.parse(curUrl)
expect(path).toEqual('/')
})
it('should not replace history of the origin page when GSSP page is navigated to client-side (external)', async () => {
const browser = await webdriver(appPort, '/another?mark_as=root')
await browser.eval(`(function () {
window.location.href = '/'
})()`)
await browser.waitForElementByCss('#index')
await browser.eval(`(function () {
window.next.router.push('/gssp-blog/redirect-dest-_gssp-blog_first')
})()`)
await browser.waitForElementByCss('#gssp')
await browser.eval(`(function () {
window.history.back()
})()`)
const curUrl = await browser.url()
const { path } = url.parse(curUrl)
expect(path).toEqual('/')
})
it('should not replace history of the origin page when GSP page is navigated to client-side (internal)', async () => {
const browser = await webdriver(appPort, '/another?mark_as=root')
await browser.eval(`(function () {
window.location.href = '/'
})()`)
await browser.waitForElementByCss('#index')
await browser.eval(`(function () {
window.next.router.push('/gsp-blog/redirect-dest-_another')
})()`)
await browser.waitForElementByCss('#another')
await browser.eval(`(function () {
window.history.back()
})()`)
const curUrl = await browser.url()
const { path } = url.parse(curUrl)
expect(path).toEqual('/')
})
it('should not replace history of the origin page when GSP page is navigated to client-side (external)', async () => {
const browser = await webdriver(appPort, '/another?mark_as=root')
await browser.eval(`(function () {
window.location.href = '/'
})()`)
await browser.waitForElementByCss('#index')
await browser.eval(`(function () {
window.next.router.push('/gsp-blog/redirect-dest-_gsp-blog_first')
})()`)
await browser.waitForElementByCss('#gsp')
await browser.eval(`(function () {
window.history.back()
})()`)
const curUrl = await browser.url()
const { path } = url.parse(curUrl)
expect(path).toEqual('/')
})
}
describe('GS(S)P Redirect Support', () => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册