diff --git a/e2e/reporting-detailed.spec.ts b/e2e/reporting-detailed.spec.ts index 216cb247..de80c979 100644 --- a/e2e/reporting-detailed.spec.ts +++ b/e2e/reporting-detailed.spec.ts @@ -32,7 +32,7 @@ test('test that detailed view shows time entries correctly', async ({ page, ctx // Verify the time entry is shown with all details await expect(page.getByText(projectName, { exact: true }).first()).toBeVisible(); - await expect(page.locator('input[name="Duration"]').first()).toHaveValue('1h 00min'); + await expect(page.locator('input[name="Duration"]').first()).toHaveValue('1:00:00'); await expect(page.getByText('Entry for ' + projectName, { exact: true }).first()).toBeVisible(); }); @@ -62,8 +62,8 @@ test('test that updating duration in detailed view works correctly', async ({ pa ), ]); - // Verify the new duration is displayed - await expect(durationInput).toHaveValue(updatedDuration); + // Verify the new duration is displayed (reporting views promote to HH:MM:SS format) + await expect(durationInput).toHaveValue('2:30:00'); }); // ────────────────────────────────────────────────── diff --git a/e2e/reporting.spec.ts b/e2e/reporting.spec.ts index b8f1adc1..85cf77b5 100644 --- a/e2e/reporting.spec.ts +++ b/e2e/reporting.spec.ts @@ -333,7 +333,7 @@ test('test that task filtering works in reporting', async ({ page, ctx }) => { await page.keyboard.press('Escape'); // Verify the report only shows 1h (task1's duration) - await expect(page.getByTestId('reporting_view').getByText('1h 00min').first()).toBeVisible(); + await expect(page.getByTestId('reporting_view').getByText('1:00:00').first()).toBeVisible(); }); test('test that task multiselect search filters the option list', async ({ page, ctx }) => { @@ -474,7 +474,7 @@ test('test that tag filtering works in reporting', async ({ page, ctx }) => { await page.keyboard.press('Escape'); // Verify only time entries with tag1 are shown - await expect(page.getByTestId('reporting_view').getByText('1h 00min').first()).toBeVisible(); + await expect(page.getByTestId('reporting_view').getByText('1:00:00').first()).toBeVisible(); }); test('test that tag dropdown search filters the option list', async ({ page, ctx }) => { @@ -594,7 +594,7 @@ test('test that billable status filtering works in reporting', async ({ page, ct waitForReportingUpdate(page), ]); - await expect(page.getByTestId('reporting_view').getByText('1h 00min').first()).toBeVisible(); + await expect(page.getByTestId('reporting_view').getByText('1:00:00').first()).toBeVisible(); }); test('test that billable filter can switch between all three states', async ({ page }) => { @@ -885,7 +885,7 @@ test.describe('Employee Reporting Restrictions', () => { // Employee's data should be visible (1h) await expect( - employee.page.getByTestId('reporting_view').getByText('1h 00min').first() + employee.page.getByTestId('reporting_view').getByText('1:00:00').first() ).toBeVisible(); }); diff --git a/e2e/shared-reports.spec.ts b/e2e/shared-reports.spec.ts index dfffd1a1..9ee2ed1b 100644 --- a/e2e/shared-reports.spec.ts +++ b/e2e/shared-reports.spec.ts @@ -292,8 +292,8 @@ test('test that shared report respects task filter', async ({ page, ctx }) => { await page.goto(shareableLink); await expect(page.getByText('Reporting')).toBeVisible(); await expect(page.getByText('Total')).toBeVisible(); - await expect(page.getByText('1h 00min').first()).toBeVisible(); - await expect(page.getByText('3h 00min')).not.toBeVisible(); + await expect(page.getByText('1:00:00').first()).toBeVisible(); + await expect(page.getByText('3:00:00')).not.toBeVisible(); }); test('test that shared report respects client filter', async ({ page, ctx }) => { @@ -369,8 +369,8 @@ test('test that shared report respects tag filter', async ({ page, ctx }) => { await page.goto(shareableLink); await expect(page.getByText('Reporting')).toBeVisible(); await expect(page.getByText('Total')).toBeVisible(); - await expect(page.getByText('1h 00min').first()).toBeVisible(); - await expect(page.getByText('3h 00min')).not.toBeVisible(); + await expect(page.getByText('1:00:00').first()).toBeVisible(); + await expect(page.getByText('3:00:00')).not.toBeVisible(); }); test('test that shared report respects member filter', async ({ page, ctx }) => { @@ -425,7 +425,7 @@ test('test that shared report with billable filter only shows billable entries', ]); // Verify only 1h shows before saving - await expect(page.getByTestId('reporting_view').getByText('1h 00min').first()).toBeVisible(); + await expect(page.getByTestId('reporting_view').getByText('1:00:00').first()).toBeVisible(); const { shareableLink } = await saveAsSharedReport(page, reportName); @@ -435,8 +435,8 @@ test('test that shared report with billable filter only shows billable entries', await expect(page.getByText('Total')).toBeVisible(); // Shared report should only show the 1h billable entry, not the 2h non-billable - await expect(page.getByText('1h 00min').first()).toBeVisible(); - await expect(page.getByText('3h 00min')).not.toBeVisible(); + await expect(page.getByText('1:00:00').first()).toBeVisible(); + await expect(page.getByText('3:00:00')).not.toBeVisible(); }); // ────────────────────────────────────────────────── diff --git a/resources/js/Pages/Teams/Partials/OrganizationFormatSettings.vue b/resources/js/Pages/Teams/Partials/OrganizationFormatSettings.vue index 0362460a..56831244 100644 --- a/resources/js/Pages/Teams/Partials/OrganizationFormatSettings.vue +++ b/resources/js/Pages/Teams/Partials/OrganizationFormatSettings.vue @@ -157,9 +157,9 @@ async function submit() { Reports and totals shown next to cost use HH:MM:SS for this format, so the - duration reconciles with the billable amount down to the second. Everywhere - else (time tracker, calendar, entry rows) seconds are omitted and durations - stay in your chosen format. + duration reconciles with the billable amount down to the second. Everywhere else + (time tracker, calendar, entry rows) seconds are omitted and durations stay in + your chosen format.