summaryrefslogtreecommitdiff
path: root/tests/todo-app.spec.ts
blob: 7fe7d2fcbc91c2b3b5f51cadf2f4d451b2c08263 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { getByTestId, prettyDOM } from '@testing-library/dom'
import '@testing-library/jest-dom'
import { delay, loadHTMLFixture } from './util'

describe('todo-app example', () => {
  describe('Add new task', () => {
    let $textInput: HTMLInputElement
    let $addBtn: HTMLButtonElement

    let $taskItems: Array<HTMLElement> = []

    const submit = async (text: string) => {
      $textInput.value = text
      $addBtn.click()

      await delay(100)
      $taskItems = [
        ...document.querySelectorAll<HTMLElement>(
          '[data-instance="task-item"]',
        ),
      ]
    }

    beforeAll(async () => {
      await loadHTMLFixture('todo-app')

      $textInput = getByTestId<HTMLInputElement>(
        document.body,
        'add-task-input',
      )
      $addBtn = getByTestId<HTMLButtonElement>(document.body, 'add-task-btn')
    })

    it('should add new unchecked task', async () => {
      // Add first item
      await submit('Buy Milk')
      expect($taskItems).toHaveLength(1)
      expect(getComputedStyle($taskItems[0]).getPropertyValue('--text')).toBe(
        'Buy Milk',
      )

      // Add the second item
      await submit('Kill all the non-believers')
      expect($taskItems).toHaveLength(2)
      expect(getComputedStyle($taskItems[0]).getPropertyValue('--text')).toBe(
        'Buy Milk',
      )
      expect(getComputedStyle($taskItems[1]).getPropertyValue('--text')).toBe(
        'Kill all the non-believers',
      )
    })
  })
})