Skip to content

Commit 6e92f3b

Browse files
committed
test: reduce flakyness of files version tests
Those tests are pretty slow, even locally they took 11s for one test. Timeout is 30s, so on crowded CI this often failed. Fixed with: 1. Reduce number of page loads by simply navigating back to parent folder using breadcrumbs (reduces run time by 4s per test locally) 2. Mark as slow as setup still takes some time. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
1 parent 6e98de3 commit 6e92f3b

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

tests/playwright/e2e/files_versions/version-cross-share-move-and-copy.spec.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ async function copyToRoot(filesListPage: FilesListPage, copyMoveDialog: CopyMove
121121
}
122122

123123
test.describe('files_versions: versions across a share move/copy', () => {
124+
// Every test here seeds a share, boots the files app twice,
125+
// and walks the sidebar, the versions list and the move/copy picker.
126+
test.slow()
127+
124128
test('moves the versions when the file is moved out of a received share', async ({ page, user, owner, ownerRequest, filesListPage, versionsTab, filesSidebar, copyMoveDialog }) => {
125129
await seedSharedVersionedFile(owner, ownerRequest, user, page.request, FILE_NAME)
126130
await nameInitialVersion(filesListPage, versionsTab, SHARED_FOLDER, FILE_NAME)
@@ -150,8 +154,7 @@ test.describe('files_versions: versions across a share move/copy', () => {
150154
await nameInitialVersion(filesListPage, versionsTab, `${SHARED_FOLDER}/${subFolder}/${subSubFolder}`, FILE_NAME)
151155
await filesSidebar.close()
152156

153-
await filesListPage.open()
154-
await filesListPage.navigateToFolder(SHARED_FOLDER)
157+
await filesListPage.navigateToBreadcrumb(SHARED_FOLDER)
155158
await moveToRoot(filesListPage, copyMoveDialog, subFolder)
156159

157160
await assertVersionsContent(filesListPage, versionsTab, relPath, { expectLabel: true })
@@ -165,8 +168,7 @@ test.describe('files_versions: versions across a share move/copy', () => {
165168
await nameInitialVersion(filesListPage, versionsTab, `${SHARED_FOLDER}/${subFolder}/${subSubFolder}`, FILE_NAME)
166169
await filesSidebar.close()
167170

168-
await filesListPage.open()
169-
await filesListPage.navigateToFolder(SHARED_FOLDER)
171+
await filesListPage.navigateToBreadcrumb(SHARED_FOLDER)
170172
await copyToRoot(filesListPage, copyMoveDialog, subFolder)
171173

172174
await assertVersionsContent(filesListPage, versionsTab, relPath, { expectLabel: false })

tests/playwright/support/sections/FilesListPage.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ export class FilesListPage {
7474
return this.page.getByRole('navigation', { name: 'Current directory path' })
7575
}
7676

77+
/**
78+
* Navigate to an ancestor of the current folder through the breadcrumb
79+
*
80+
* @param name - The label of the crumb to navigate to
81+
*/
82+
async navigateToBreadcrumb(name: string): Promise<void> {
83+
await this.getBreadcrumbs().getByRole('button', { name, exact: true }).click()
84+
await this.waitForListLoaded()
85+
}
86+
7787
getRowForFile(filename: string): Locator {
7888
return this.page.locator(`[data-cy-files-list-row-name="${escapeAttributeValue(filename)}"]`)
7989
}

0 commit comments

Comments
 (0)