github-issue-tower-defence-management 1.146.11 → 1.146.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/bin/adapter/entry-points/console/ui-dist/assets/{index-D868xHqH.js → index-DcDM50gs.js} +1 -1
- package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
- package/package.json +1 -1
- package/src/adapter/entry-points/console/ui/e2e/consoleScenario.spec.ts +12 -12
- package/src/adapter/entry-points/console/ui/src/features/console/logic/tabAdvance.test.ts +9 -2
- package/src/adapter/entry-points/console/ui/src/features/console/logic/types.ts +1 -1
- package/src/adapter/entry-points/console/ui-dist/assets/{index-D868xHqH.js → index-DcDM50gs.js} +1 -1
- package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>TDPM Console</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-DcDM50gs.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CKX2ny-z.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
package/package.json
CHANGED
|
@@ -82,39 +82,39 @@ test('processing tabs drives auto-advance and keeps emptied badges at zero', asy
|
|
|
82
82
|
await expect(approveButton).toBeVisible();
|
|
83
83
|
await approveButton.click();
|
|
84
84
|
|
|
85
|
-
await expect(activeTabLabel(page)).toHaveText('
|
|
85
|
+
await expect(activeTabLabel(page)).toHaveText('Unread', { timeout: 8000 });
|
|
86
86
|
await expect(tabByLabel(page, 'Awaiting Quality Check')).toHaveCount(0, {
|
|
87
87
|
timeout: 8000,
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
await itemRowByText(
|
|
91
91
|
page,
|
|
92
|
-
'
|
|
92
|
+
'Scaffold React console UI under entry-points with build bundling',
|
|
93
93
|
).click();
|
|
94
94
|
await processSelectedItemViaStatus(page);
|
|
95
|
-
await expect(tabBadge(page, '
|
|
96
|
-
await tabByLabel(page, '
|
|
95
|
+
await expect(tabBadge(page, 'Unread')).toHaveText('1', { timeout: 8000 });
|
|
96
|
+
await tabByLabel(page, 'Unread').click();
|
|
97
97
|
|
|
98
98
|
await itemRowByText(
|
|
99
99
|
page,
|
|
100
|
-
'
|
|
100
|
+
'Add server-side console API handlers for read and operation endpoints',
|
|
101
101
|
).click();
|
|
102
102
|
await processSelectedItemViaStatus(page);
|
|
103
103
|
|
|
104
|
-
await expect(activeTabLabel(page)).toHaveText('
|
|
105
|
-
await expect(tabByLabel(page, '
|
|
104
|
+
await expect(activeTabLabel(page)).toHaveText('Triage', { timeout: 8000 });
|
|
105
|
+
await expect(tabByLabel(page, 'Unread')).toHaveCount(0, {
|
|
106
106
|
timeout: 8000,
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
await tabByLabel(page, 'Todo by human').click();
|
|
110
110
|
await expect(activeTabLabel(page)).toHaveText('Todo by human');
|
|
111
|
-
await expect(tabByLabel(page, '
|
|
111
|
+
await expect(tabByLabel(page, 'Unread')).toHaveCount(0);
|
|
112
112
|
await expect(tabBadge(page, 'Todo by human')).toHaveText('1');
|
|
113
113
|
|
|
114
|
-
await tabByLabel(page, '
|
|
115
|
-
await expect(activeTabLabel(page)).toHaveText('
|
|
116
|
-
await expect(tabByLabel(page, '
|
|
117
|
-
await expect(tabBadge(page, '
|
|
114
|
+
await tabByLabel(page, 'Triage').click();
|
|
115
|
+
await expect(activeTabLabel(page)).toHaveText('Triage');
|
|
116
|
+
await expect(tabByLabel(page, 'Unread')).toHaveCount(0);
|
|
117
|
+
await expect(tabBadge(page, 'Triage')).toHaveText('2');
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
test('renders the Workflow Blocker tab leftmost and shows its detail operations', async ({
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
findNextNonEmptyTabToRight,
|
|
3
3
|
resolveDefaultActiveTab,
|
|
4
4
|
} from './tabAdvance';
|
|
5
|
-
import type
|
|
5
|
+
import { CONSOLE_TABS, type ConsoleTabName } from './types';
|
|
6
6
|
|
|
7
7
|
const counts = (
|
|
8
8
|
overrides: Partial<Record<ConsoleTabName, number>>,
|
|
@@ -17,6 +17,13 @@ const counts = (
|
|
|
17
17
|
...overrides,
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
+
describe('CONSOLE_TABS ordering', () => {
|
|
21
|
+
it('places Unread before Triage so unseen items are worked first', () => {
|
|
22
|
+
const names = CONSOLE_TABS.map((tab) => tab.name);
|
|
23
|
+
expect(names.indexOf('unread')).toBeLessThan(names.indexOf('triage'));
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
20
27
|
describe('findNextNonEmptyTabToRight', () => {
|
|
21
28
|
it('returns the first non-empty tab to the right of the active tab', () => {
|
|
22
29
|
expect(findNextNonEmptyTabToRight('prs', counts({ unread: 7 }))).toBe(
|
|
@@ -45,7 +52,7 @@ describe('findNextNonEmptyTabToRight', () => {
|
|
|
45
52
|
it('returns the immediately adjacent tab when it is non-empty', () => {
|
|
46
53
|
expect(
|
|
47
54
|
findNextNonEmptyTabToRight('prs', counts({ triage: 12, unread: 7 })),
|
|
48
|
-
).toBe('
|
|
55
|
+
).toBe('unread');
|
|
49
56
|
});
|
|
50
57
|
|
|
51
58
|
it('returns null when no tab to the right has any items', () => {
|
|
@@ -157,8 +157,8 @@ export type ConsoleTab = {
|
|
|
157
157
|
export const CONSOLE_TABS: ConsoleTab[] = [
|
|
158
158
|
{ name: 'workflow-blocker', label: 'Workflow Blocker' },
|
|
159
159
|
{ name: 'prs', label: 'Awaiting Quality Check' },
|
|
160
|
-
{ name: 'triage', label: 'Triage' },
|
|
161
160
|
{ name: 'unread', label: 'Unread' },
|
|
161
|
+
{ name: 'triage', label: 'Triage' },
|
|
162
162
|
{ name: 'failed-preparation', label: 'Failed Preparation' },
|
|
163
163
|
{ name: 'todo-by-human', label: 'Todo by human' },
|
|
164
164
|
{ name: 'todo-by-agent', label: 'Todo by agent' },
|