diff --git a/cypress/e2e/pages-links.spec.js b/cypress/e2e/pages-links.spec.js index c79d855b8..4a8061722 100644 --- a/cypress/e2e/pages-links.spec.js +++ b/cypress/e2e/pages-links.spec.js @@ -5,13 +5,14 @@ const baseUrl = Cypress.env('baseUrl') let imageId, pdfId, textId, sourceUrl -let anotherCollectiveFirstPageId, linkTargetPageId +let anotherCollectiveFirstPageId, anotherCollectiveId, linkTestingCollectiveId, linkTargetPageId describe('Page link handling', function() { before(function() { cy.loginAs('bob') cy.deleteAndSeedCollective('Another Collective') - .seedPage('First Page', '', 'Readme.md').then(({ pageId }) => { + .seedPage('First Page', '', 'Readme.md').then(({ collectiveId, pageId }) => { + anotherCollectiveId = collectiveId anotherCollectiveFirstPageId = pageId }) cy.deleteAndSeedCollective('Link Testing') @@ -21,6 +22,7 @@ describe('Page link handling', function() { linkTargetPageId = pageId }) .seedPage('Link Source', '', 'Readme.md').then(({ collectiveId, pageId }) => { + linkTestingCollectiveId = collectiveId sourceUrl = new URL(`${baseUrl}/index.php/apps/collectives/Link-Testing-${collectiveId}/page-${pageId}-Link-Source`) }) cy.seedPageContent('Link%20Testing/Link%20Target.md', 'Some content') @@ -56,15 +58,15 @@ describe('Page link handling', function() { ## Links supposed to open in same window -* URL to page in this collective: [Link Target](${baseUrl}/index.php/apps/collectives/Link%20Testing/Link%20Target) -* Absolute path to page in this collective: [Link Target](/index.php/apps/collectives/Link%20Testing/Link%20Target) +* URL to page in this collective: [Link Target](${baseUrl}/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target) +* Absolute path to page in this collective: [Link Target](/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target) * Relative path to page in this collective with fileId: [Link Target](./Link%20Target?fileId=${linkTargetPageId}) * Relative path to page in this collective with fileId and outdated path: [Link Target](./Link%20Target%20Outdated?fileId=${linkTargetPageId}) * Relative path to page in this collective without fileId: [Link Target](./Link%20Target) * Relative path to markdown file in this collective: [Link Target](./Link%20Target.md) -* URL to page in other collective with fileId: [Another Collective/First Page](${baseUrl}/index.php/apps/collectives/Another%20Collective/First%20Page?fileId=${anotherCollectiveFirstPageId}) -* Absolute path to page in other collective without fileId: [Another Collective/First Page](/index.php/apps/collectives/Another%20Collective/First%20Page) +* URL to page in other collective with fileId: [Another Collective/First Page](${baseUrl}/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/First%20Page?fileId=${anotherCollectiveFirstPageId}) +* Absolute path to page in other collective without fileId: [Another Collective/First Page](/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/page-${anotherCollectiveFirstPageId}-First-Page) ## Links supposed to open in new window @@ -124,9 +126,8 @@ describe('Page link handling', function() { cy.url().then((newBaseUrl) => { const url = new URL(href, newBaseUrl) - const encodedCollectiveName = encodeURIComponent('Link Testing') const pathname = isPublic - ? url.pathname.replace(`/${encodedCollectiveName}`, `/p/\\w+/${encodedCollectiveName}`) + ? url.pathname.replace('/Link-Testing', '/p/\\w+/Link-Testing') : url.pathname cy.location().should((loc) => { expect(loc.pathname).to.match(new RegExp(`^${expectedPathname || pathname}$`)) @@ -239,7 +240,7 @@ describe('Page link handling', function() { describe('Link handling to collectives in view mode', function() { it('Opens link with URL to page in this collective in same tab', function() { - const href = `${baseUrl}/index.php/apps/collectives/Link%20Testing/Link%20Target` + const href = `${baseUrl}/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { expectedSearch: `?fileId=${linkTargetPageId}`, @@ -249,7 +250,7 @@ describe('Page link handling', function() { } }) it('Opens link with absolute path to page in this collective in same tab', function() { - const href = '/index.php/apps/collectives/Link%20Testing/Link%20Target' + const href = '/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target' if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { expectedSearch: `?fileId=${linkTargetPageId}`, @@ -268,7 +269,7 @@ describe('Page link handling', function() { // const href = `./Link%20Target?fileId=${linkTargetPageId}` const href = `/index.php/apps/files/?dir=/&openfile=${linkTargetPageId}#relPath=./Link%20Target` testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } @@ -278,7 +279,7 @@ describe('Page link handling', function() { if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { const href = `./Link%20Target%20Outdated?fileId=${linkTargetPageId}` testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } else { @@ -286,7 +287,7 @@ describe('Page link handling', function() { // const href = `./Link%20Target%20Outdated?fileId=${linkTargetPageId}` const href = `/index.php/apps/files/?dir=/&openfile=${linkTargetPageId}#relPath=./Link%20Target%20Outdated` testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } @@ -295,7 +296,7 @@ describe('Page link handling', function() { const href = './Link%20Target' if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } else { @@ -307,20 +308,20 @@ describe('Page link handling', function() { const href = './Link%20Target.md' if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } else { - testLinkToSameTab(href, { expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target' }) + testLinkToSameTab(href, { expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` }) } }) it('Opens link with URL to page in other collective with fileId in same tab', function() { - const href = `${baseUrl}/index.php/apps/collectives/Another%20Collective/First%20Page?fileId=${anotherCollectiveFirstPageId}` + const href = `${baseUrl}/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/First%20Page?fileId=${anotherCollectiveFirstPageId}` testLinkToSameTab(href) }) it('Opens link with absolute path to page in other collective without fileId in same tab', function() { - const href = '/index.php/apps/collectives/Another%20Collective/First%20Page' + const href = `/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/page-${anotherCollectiveFirstPageId}-First-Page` if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { expectedSearch: `?fileId=${anotherCollectiveFirstPageId}`, @@ -337,7 +338,7 @@ describe('Page link handling', function() { // const href = `../Link%20Target.md?fileId=${linkTargetPageId}` const href = `/index.php/apps/files/?dir=&openfile=${linkTargetPageId}#relPath=../Link%20Target.md` testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } @@ -350,7 +351,7 @@ describe('Page link handling', function() { // const href = `./Link%20Target?fileId=${linkTargetPageId}` const href = `/index.php/apps/files/?dir=/&openfile=${linkTargetPageId}#relPath=./Link%20Target` testLinkToSameTab(href, { - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } @@ -359,7 +360,7 @@ describe('Page link handling', function() { describe('Link handling to collectives in edit mode', function() { it('Opens link with URL to page in this collective in same tab', function() { - const href = `${baseUrl}/index.php/apps/collectives/Link%20Testing/Link%20Target` + const href = `${baseUrl}/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` cy.switchToEditMode() // Starting with Nextcloud 29, internal links will always open in same tab (also in edit mode) if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { @@ -372,7 +373,7 @@ describe('Page link handling', function() { } }) it('Opens link with absolute path to page in this collective in same tab', function() { - const href = '/index.php/apps/collectives/Link%20Testing/Link%20Target' + const href = `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` cy.switchToEditMode() // Starting with Nextcloud 29, internal links will always open in same tab (also in edit mode) if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { @@ -401,7 +402,7 @@ describe('Page link handling', function() { if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { edit: true, - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } else { @@ -429,7 +430,7 @@ describe('Page link handling', function() { if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { edit: true, - expectedPathname: '/index.php/apps/collectives/Link%20Testing/Link%20Target', + expectedPathname: `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target`, expectedSearch: `?fileId=${linkTargetPageId}`, }) } else { @@ -438,7 +439,7 @@ describe('Page link handling', function() { }) it('Opens link with URL to page in other collective with fileId in same tab', function() { - const href = `${baseUrl}/index.php/apps/collectives/Another%20Collective/First%20Page?fileId=${anotherCollectiveFirstPageId}` + const href = `${baseUrl}/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/First%20Page?fileId=${anotherCollectiveFirstPageId}` cy.switchToEditMode() // Starting with Nextcloud 29, internal links will always open in same tab (also in edit mode) if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { @@ -448,7 +449,7 @@ describe('Page link handling', function() { } }) it('Opens link with absolute path to page in other collective without fileId in same tab', function() { - const href = '/index.php/apps/collectives/Another%20Collective/First%20Page' + const href = `/index.php/apps/collectives/Another-Collective-${anotherCollectiveId}/page-${anotherCollectiveFirstPageId}-First-Page` cy.switchToEditMode() // Starting with Nextcloud 29, internal links will always open in same tab (also in edit mode) if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { @@ -552,13 +553,13 @@ describe('Page link handling', function() { it('Public share in view mode: opens link with absolute path to page in this collective in same tab', function() { cy.logout() cy.visit(`${shareUrl}/Link Source`) - const href = '/index.php/apps/collectives/Link%20Testing/Link%20Target' + const href = `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` testLinkToSameTab(href, { isPublic: true }) }) it('Public share in edit mode: opens link with absolute path to page in this collective in same tab', function() { cy.logout() cy.visit(`${shareUrl}/Link Source`) - const href = '/index.php/apps/collectives/Link%20Testing/Link%20Target' + const href = `/index.php/apps/collectives/Link-Testing-${linkTestingCollectiveId}/page-${linkTargetPageId}-Link-Target` cy.switchToEditMode() if (!['stable27', 'stable28'].includes(Cypress.env('ncVersion'))) { testLinkToSameTab(href, { edit: true, isPublic: true })