summaryrefslogtreecommitdiff
path: root/web/test
diff options
context:
space:
mode:
Diffstat (limited to 'web/test')
-rw-r--r--web/test/new-task-button.test.mjs24
1 files changed, 24 insertions, 0 deletions
diff --git a/web/test/new-task-button.test.mjs b/web/test/new-task-button.test.mjs
new file mode 100644
index 0000000..45a3548
--- /dev/null
+++ b/web/test/new-task-button.test.mjs
@@ -0,0 +1,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);
+ });
+});