loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: improve repo migrate e2e test (#7378)

- Generate a repository name for each run, such that retries will use a new repository and not have any leftover.
- Make the test actually pass by ensuring the unauthenticated page didn't reuse storage state that contained authenticated cookies.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7378
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>

authored by

Gusted
Gusted
and committed by
Gusted
7baf9994 facc2bb2

+8 -7
+8 -7
tests/e2e/repo-migrate.test.e2e.ts
··· 38 38 test('Migration Progress Page', async ({page, browser}, workerInfo) => { 39 39 test.skip(workerInfo.project.name === 'Mobile Safari', 'Flaky actionability checks on Mobile Safari'); 40 40 41 - expect((await page.goto('/user2/invalidrepo'))?.status(), 'repo should not exist yet').toBe(404); 41 + const repoName = `invalidrepo-${globalThis.crypto.randomUUID()}`; 42 + expect((await page.goto(`/user2/${repoName}`))?.status(), 'repo should not exist yet').toBe(404); 42 43 43 44 await page.goto('/repo/migrate?service_type=1'); 44 45 45 46 const form = page.locator('form'); 46 - await form.getByRole('textbox', {name: 'Repository Name'}).fill('invalidrepo'); 47 - await form.getByRole('textbox', {name: 'Migrate / Clone from URL'}).fill('https://codeberg.org/forgejo/invalidrepo'); 47 + await form.getByRole('textbox', {name: 'Repository Name'}).fill(repoName); 48 + await form.getByRole('textbox', {name: 'Migrate / Clone from URL'}).fill(`https://codeberg.org/forgejo/${repoName}`); 48 49 await save_visual(page); 49 50 await form.locator('button.primary').click({timeout: 5000}); 50 - await expect(page).toHaveURL('user2/invalidrepo'); 51 + await expect(page).toHaveURL(`user2/${repoName}`); 51 52 await save_visual(page); 52 53 53 - const ctx = await test_context(browser); 54 + const ctx = await test_context(browser, {storageState: {cookies: [], origins: []}}); 54 55 const unauthenticatedPage = await ctx.newPage(); 55 - expect((await unauthenticatedPage.goto('/user2/invalidrepo'))?.status(), 'public migration page should be accessible').toBe(200); 56 + expect((await unauthenticatedPage.goto(`/user2/${repoName}`))?.status(), 'public migration page should be accessible').toBe(200); 56 57 await expect(unauthenticatedPage.locator('#repo_migrating_progress')).toBeVisible(); 57 58 58 59 await page.reload(); ··· 60 61 await save_visual(page); 61 62 await page.getByRole('button', {name: 'Delete this repository'}).click(); 62 63 const deleteModal = page.locator('#delete-repo-modal'); 63 - await deleteModal.getByRole('textbox', {name: 'Confirmation string'}).fill('user2/invalidrepo'); 64 + await deleteModal.getByRole('textbox', {name: 'Confirmation string'}).fill(`user2/${repoName}`); 64 65 await save_visual(page); 65 66 await deleteModal.getByRole('button', {name: 'Delete repository'}).click(); 66 67 await expect(page).toHaveURL('/');