// @watch start // web_src/js/features/comp/** // web_src/js/features/repo-** // templates/repo/issue/view_content/* // @watch end import {expect} from '@playwright/test'; import {test, save_visual} from './utils_e2e.ts'; test.use({user: 'user2'}); test('Issue timetracking', async ({page}) => { await page.goto('/user2/repo1/issues/new'); // Create temporary issue. await page.getByPlaceholder('Title').fill('Just a title'); await page.getByPlaceholder('Leave a comment').fill('Hi, have you considered using a rotating fish as logo?'); await page.getByRole('button', {name: 'Create issue'}).click(); await expect(page).toHaveURL(/\/user2\/repo1\/issues\/\d+$/); // Manually add time to the time tracker. await page.getByRole('button', {name: 'Add time'}).click(); await page.getByPlaceholder('Hours').fill('5'); await page.getByPlaceholder('Minutes').fill('32'); await page.getByRole('button', {name: 'Add time', exact: true}).click(); // Verify this was added in the timeline. await expect(page.locator('.ui.timeline')).toContainText('added spent time'); await expect(page.locator('.ui.timeline')).toContainText('5 hours 32 minutes'); // Verify it is shown in the issue sidebar await expect(page.locator('.issue-content-right .comments')).toContainText('Total time spent: 5 hours 32 minutes'); await save_visual(page); // Delete the added time. await page.getByRole('button', {name: 'Delete this time log'}).click(); await page.getByRole('button', {name: 'Yes'}).click(); // Verify this was removed in the timeline. await expect(page.locator('.ui.timeline')).toContainText('deleted spent time'); await expect(page.locator('.ui.timeline')).toContainText('- 5 hours 32 minutes'); // Delete the issue. await page.getByRole('button', {name: 'Delete'}).click(); await page.getByRole('button', {name: 'Yes'}).click(); await expect(page).toHaveURL('/user2/repo1/issues'); });