diff --git a/e2e/storage/helpers.ts b/e2e/storage/helpers.ts index 02a7fe25..d750d9a2 100644 --- a/e2e/storage/helpers.ts +++ b/e2e/storage/helpers.ts @@ -206,7 +206,10 @@ export async function putTextObject( } export async function putDirectoryMarker(client: S3Client, bucket: string, key: string) { - await client.send(new PutObjectCommand({ Bucket: bucket, Key: key, Body: '' })); + // The SDK sets no Content-Length for a falsy body, so '' triggers its stream warning. + await client.send( + new PutObjectCommand({ Bucket: bucket, Key: key, Body: Buffer.alloc(0), ContentLength: 0 }) + ); } export async function deleteKnownKeys(client: S3Client, bucket: string, keys: string[]) { diff --git a/e2e/storage/upload.spec.ts b/e2e/storage/upload.spec.ts index e8c0b050..d724796b 100644 --- a/e2e/storage/upload.spec.ts +++ b/e2e/storage/upload.spec.ts @@ -346,7 +346,8 @@ test.describe('Storage S3 — Upload', () => { const warning = page.getByRole('dialog', { name: 'Upload in progress' }); await page.goBack(); await expect(warning).toBeVisible(); - expect(page.url()).toBe(browseUrl); + // SvelteKit restores the URL of a cancelled Back asynchronously. + await expect(page).toHaveURL(browseUrl); await warning.getByRole('button', { name: 'Stay' }).click(); await expect(warning).toBeHidden(); await expect(page.getByRole('heading', { name: 'Upload', exact: true })).toBeVisible(); diff --git a/e2e/support/garage.ts b/e2e/support/garage.ts index 9989bf78..2cd8a3eb 100644 --- a/e2e/support/garage.ts +++ b/e2e/support/garage.ts @@ -152,7 +152,17 @@ async function ensureBucket(bucketName: string): Promise { return existingId; } - const created = await adminPost('/v2/CreateBucket', { globalAlias: bucketName }); + let created: unknown; + try { + created = await adminPost('/v2/CreateBucket', { globalAlias: bucketName }); + } catch (err) { + // Another worker may have created the bucket since the lookup above. + const racedId = await findBucketId(bucketName); + if (racedId) { + return racedId; + } + throw err; + } const createdId = readString(created, ['id', 'bucketId', 'bucket_id']); if (createdId) {