From 0ef02ba51529dea79036efc1d68718a3354bd168 Mon Sep 17 00:00:00 2001 From: izzy Date: Wed, 7 Jan 2026 15:34:24 +0000 Subject: [PATCH] test: e2e web test --- e2e/src/web/specs/integrity.e2e-spec.ts | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 e2e/src/web/specs/integrity.e2e-spec.ts diff --git a/e2e/src/web/specs/integrity.e2e-spec.ts b/e2e/src/web/specs/integrity.e2e-spec.ts new file mode 100644 index 0000000000..0b7d2a8e3e --- /dev/null +++ b/e2e/src/web/specs/integrity.e2e-spec.ts @@ -0,0 +1,46 @@ +import { LoginResponseDto, ManualJobName, QueueName } from '@immich/sdk'; +import { expect, test } from '@playwright/test'; +import { utils } from 'src/utils'; + +test.describe.configure({ mode: 'serial' }); + +test.describe('Integrity', () => { + let admin: LoginResponseDto; + + test.beforeAll(async () => { + utils.initSdk(); + await utils.resetDatabase(); + admin = await utils.adminSetup(); + }); + + test('run integrity jobs to update stats', async ({ context, page }) => { + await utils.setAuthCookies(context, admin.accessToken); + + await utils.createJob(admin.accessToken, { + name: ManualJobName.IntegrityUntrackedFiles, + }); + + await utils.waitForQueueFinish(admin.accessToken, QueueName.IntegrityCheck); + + await page.goto('/admin/maintenance'); + + const count = page.getByText('Untracked Files') + .locator('..') + .locator('..') + .locator('div') + .nth(1); + + const previousCount = parseInt(await count.textContent() ?? ''); + + await utils.putTextFile('untracked', `/data/upload/${admin.userId}/untracked1.png`); + + const checkButton = page.getByText('Integrity Report') + .locator('..') + .getByRole('button', { name: 'Check All' }); + + await checkButton.click(); + await expect(checkButton).toBeEnabled(); + + await expect(count).toContainText((previousCount + 1).toString()); + }); +});