Skip to content

Commit

Permalink
add tests for item drag and drop
Browse files Browse the repository at this point in the history
  • Loading branch information
morris committed Jan 1, 2025
1 parent f4f2dea commit 40ac583
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ jobs:
- run: npm run test-coverage
env:
CI: true
- run: npm run test-e2e
env:
CI: true
deploy:
if: github.ref == 'refs/heads/main'
needs: check
Expand Down
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@
"format-check": "prettier --check .",
"lint": "eslint .",
"lint-styles": "stylelint public/styles/*",
"test": "playwright test",
"test-ui": "playwright test --ui",
"test-coverage": "bash scripts/test-coverage.sh"
"test": "playwright test --project Chromium",
"test-coverage": "bash scripts/test-coverage.sh",
"test-e2e": "playwright test",
"test-ui": "playwright test --ui"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
Expand Down
4 changes: 2 additions & 2 deletions test/e2e/addCustomTodoList.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import '../coverage.js';
test('Add custom to-do list', async ({ page }) => {
await page.goto('http://localhost:8080');

const add = page.locator('.todo-frame.-custom .add');
await add.click();
const addCustomTodoList = page.locator('.todo-frame.-custom .add');
await addCustomTodoList.click();

const title = page.locator('.todo-custom-list > .header > .title');
await expect(title).toHaveText('...');
Expand Down
55 changes: 55 additions & 0 deletions test/e2e/dragAndDropItems.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { expect, test } from '@playwright/test';
import '../coverage.js';

test("Reorder items inside today's list", async ({ page }) => {
// given
await page.goto('http://localhost:8080');

const input = page.locator('.-today .todo-item-input > input');

await input.focus();
await input.fill('Item A');
await page.keyboard.press('Enter');

await input.focus();
await input.fill('Item B');
await page.keyboard.press('Enter');

const itemA = page.getByText('Item A');
const itemB = page.getByText('Item B');

// when
await itemA.dragTo(itemB);

// then
const firstItem = page.locator('.-today .todo-item').first();
const secondItem = page.locator('.-today .todo-item').last();

await expect(firstItem).toHaveText('Item B');
await expect(secondItem).toHaveText('Item A');
});

test('Drag and drop from today to new custom list', async ({ page }) => {
// given
await page.goto('http://localhost:8080');

const input = page.locator('.-today .todo-item-input > input');

await input.focus();
await input.fill('Item A');
await page.keyboard.press('Enter');

const addCustomTodoList = page.locator('.todo-frame.-custom .add');
await addCustomTodoList.click();

const itemA = page.getByText('Item A');
const customList = page.locator('.todo-custom-list');

// when
await itemA.dragTo(customList, { targetPosition: { x: 0, y: 100 } });

// then
const movedItem = page.locator('.todo-custom-list .todo-item');
await expect(movedItem).toHaveText('Item A');
await page.waitForTimeout(100);
});

0 comments on commit 40ac583

Please sign in to comment.