summaryrefslogtreecommitdiff
path: root/web/test/new-task-button.test.mjs
blob: 45a3548ae9bc33d60f327a425dcd714bf6f2f230 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// new-task-button.test.mjs — visibility contract for the New Task button
//
// The New Task button lives in the global header and must be visible on all tabs.
// Run with: node --test web/test/new-task-button.test.mjs

import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { newTaskButtonShouldShowOnTab } from '../app.js';

const ALL_TABS = ['tasks', 'active', 'running', 'stats'];

describe('new task button visibility', () => {
  for (const tab of ALL_TABS) {
    it(`is visible on "${tab}" tab`, () => {
      assert.equal(newTaskButtonShouldShowOnTab(tab), true, `expected button to be visible on tab "${tab}"`);
    });
  }

  it('is visible on any unknown future tab', () => {
    assert.equal(newTaskButtonShouldShowOnTab('help'), true);
    assert.equal(newTaskButtonShouldShowOnTab('templates'), true);
    assert.equal(newTaskButtonShouldShowOnTab(''), true);
  });
});