@fdm-monster/client-next 2.2.2 → 2.2.4

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.
Files changed (40) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/README.md +19 -0
  3. package/RELEASE_NOTES.MD +21 -0
  4. package/dist/assets/index-CvbkNANW.js +105 -0
  5. package/dist/assets/index-CvbkNANW.js.map +1 -0
  6. package/dist/assets/index-DfA7W6iO.css +1 -0
  7. package/dist/index.html +3 -3
  8. package/package.json +21 -2
  9. package/screenshots/COVERAGE.md +383 -0
  10. package/screenshots/README.md +431 -0
  11. package/screenshots/fixtures/api-mock.ts +699 -0
  12. package/screenshots/fixtures/data/auth.fixtures.ts +79 -0
  13. package/screenshots/fixtures/data/cameras.fixtures.ts +48 -0
  14. package/screenshots/fixtures/data/files.fixtures.ts +56 -0
  15. package/screenshots/fixtures/data/floors.fixtures.ts +39 -0
  16. package/screenshots/fixtures/data/jobs.fixtures.ts +172 -0
  17. package/screenshots/fixtures/data/printers.fixtures.ts +132 -0
  18. package/screenshots/fixtures/data/settings.fixtures.ts +62 -0
  19. package/screenshots/fixtures/socketio-mock.ts +76 -0
  20. package/screenshots/fixtures/test-fixtures.ts +112 -0
  21. package/screenshots/helpers/dialog.helper.ts +196 -0
  22. package/screenshots/helpers/form.helper.ts +207 -0
  23. package/screenshots/helpers/navigation.helper.ts +191 -0
  24. package/screenshots/playwright.screenshots.config.ts +70 -0
  25. package/screenshots/suites/00-example.screenshots.spec.ts +29 -0
  26. package/screenshots/suites/01-auth.screenshots.spec.ts +130 -0
  27. package/screenshots/suites/02-dashboard.screenshots.spec.ts +106 -0
  28. package/screenshots/suites/03-printer-grid.screenshots.spec.ts +160 -0
  29. package/screenshots/suites/04-printer-list.screenshots.spec.ts +184 -0
  30. package/screenshots/suites/05-camera-grid.screenshots.spec.ts +127 -0
  31. package/screenshots/suites/06-print-jobs.screenshots.spec.ts +139 -0
  32. package/screenshots/suites/07-queue.screenshots.spec.ts +86 -0
  33. package/screenshots/suites/08-files.screenshots.spec.ts +142 -0
  34. package/screenshots/suites/09-settings.screenshots.spec.ts +130 -0
  35. package/screenshots/suites/10-panels-dialogs.screenshots.spec.ts +245 -0
  36. package/screenshots/utils.ts +216 -0
  37. package/vitest.config.ts +8 -0
  38. package/dist/assets/index-BlOaSQti.js +0 -105
  39. package/dist/assets/index-BlOaSQti.js.map +0 -1
  40. package/dist/assets/index-TeWdSn_6.css +0 -1
package/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <head>
5
5
  <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin="anonymous">
6
6
  <link rel="preload" as="style" onload="this.rel=&#39;stylesheet&#39;" href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700;900&amp;display=swap">
7
- <link rel="preload" as="font" type="font/woff2" href="/assets/MaterialIcons-Regular-DOtZ65Va.woff2" crossorigin="anonymous">
8
7
  <link rel="preload" as="font" type="font/eot" href="/assets/MaterialIcons-Regular-BjXOXp5c.eot" crossorigin="anonymous">
8
+ <link rel="preload" as="font" type="font/woff2" href="/assets/MaterialIcons-Regular-DOtZ65Va.woff2" crossorigin="anonymous">
9
9
  <link rel="preload" as="font" type="font/eot" href="/assets/materialdesignicons-webfont-CSr8KVlo.eot" crossorigin="anonymous">
10
10
  <link rel="preload" as="font" type="font/woff" href="/assets/MaterialIcons-Regular-FsbMSDLx.woff" crossorigin="anonymous">
11
11
  <link rel="preload" as="font" type="font/woff2" href="/assets/materialdesignicons-webfont-Dp5v-WZN.woff2" crossorigin="anonymous">
@@ -24,8 +24,8 @@
24
24
  background-color: #121212; /* should match the app theme background */
25
25
  }
26
26
  </style>
27
- <script type="module" crossorigin src="/assets/index-BlOaSQti.js"></script>
28
- <link rel="stylesheet" crossorigin href="/assets/index-TeWdSn_6.css">
27
+ <script type="module" crossorigin src="/assets/index-CvbkNANW.js"></script>
28
+ <link rel="stylesheet" crossorigin href="/assets/index-DfA7W6iO.css">
29
29
  </head>
30
30
 
31
31
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fdm-monster/client-next",
3
- "version": "2.2.2",
3
+ "version": "2.2.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/fdm-monster/fdm-monster-client-next.git"
@@ -22,7 +22,26 @@
22
22
  "test:coverage": "vitest run --coverage --environment jsdom",
23
23
  "test:e2e": "start-server-and-test preview http://127.0.0.1:5050/ 'cypress open'",
24
24
  "openapi-ts": "openapi-ts",
25
- "openapi-ts:watch": "openapi-ts --watch"
25
+ "openapi-ts:watch": "openapi-ts --watch",
26
+ "screenshots": "playwright test --config=screenshots/playwright.screenshots.config.ts",
27
+ "screenshots:headed": "playwright test --config=screenshots/playwright.screenshots.config.ts --headed",
28
+ "screenshots:debug": "playwright test --config=screenshots/playwright.screenshots.config.ts --debug",
29
+ "screenshots:ui": "playwright test --config=screenshots/playwright.screenshots.config.ts --ui",
30
+ "screenshots:chrome": "playwright test --config=screenshots/playwright.screenshots.config.ts --project=chrome-screenshots",
31
+ "screenshots:example": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/00-example --headed",
32
+ "screenshots:auth": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/01-auth",
33
+ "screenshots:dashboard": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/02-dashboard",
34
+ "screenshots:printer-grid": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/03-printer-grid",
35
+ "screenshots:printer-list": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/04-printer-list",
36
+ "screenshots:cameras": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/05-camera-grid",
37
+ "screenshots:jobs": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/06-print-jobs",
38
+ "screenshots:queue": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/07-queue",
39
+ "screenshots:files": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/08-files",
40
+ "screenshots:settings": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/09-settings",
41
+ "screenshots:dialogs": "playwright test --config=screenshots/playwright.screenshots.config.ts suites/10-panels-dialogs",
42
+ "screenshots:ci": "playwright test --config=screenshots/playwright.screenshots.config.ts",
43
+ "playwright:install": "playwright install",
44
+ "playwright:install-chromium": "playwright install chromium"
26
45
  },
27
46
  "dependencies": {},
28
47
  "devDependencies": {},
@@ -0,0 +1,383 @@
1
+ # Screenshot Test Coverage
2
+
3
+ This document tracks which views and components are covered by screenshot tests.
4
+
5
+ ## Authentication & Onboarding
6
+
7
+ ### First Time Setup
8
+ - [x] Wizard page
9
+ - [ ] Step 1 - Welcome
10
+ - [ ] Step 2 - Server configuration
11
+ - [ ] Step 3 - Admin account creation
12
+ - [ ] Step 4 - Complete
13
+
14
+ ### Login
15
+ - [x] Login page (empty)
16
+ - [x] Login page (filled)
17
+ - [ ] Login error state
18
+ - [ ] Password reset link
19
+
20
+ ### Registration
21
+ - [x] Registration page (empty)
22
+ - [x] Registration page (filled)
23
+ - [ ] Registration validation errors
24
+ - [ ] Registration disabled state
25
+
26
+ ---
27
+
28
+ ## Main Views
29
+
30
+ ### Dashboard
31
+ - [x] Dashboard overview
32
+ - [x] Dashboard with statistics
33
+ - [x] Dashboard with recent activity
34
+ - [x] Dashboard empty state
35
+ - [ ] Individual stat cards
36
+ - [ ] Recent activity list items
37
+ - [ ] Quick actions panel
38
+
39
+ ### Printer Grid
40
+ - [x] Empty grid (no floors)
41
+ - [x] Grid with floors and printers
42
+ - [x] Create First Floor button (empty state)
43
+ - [x] Create Floor dialog
44
+ - [x] Create Printer dialog (via list page)
45
+ - [x] Printer grid tiles
46
+ - [x] Drag hint/hover state
47
+ - [x] Batch operations bar
48
+ - [x] Context menu
49
+ - [ ] File upload progress snackbar
50
+ - [ ] Dragging GCode onto printer
51
+ - [ ] Printer tile loading state
52
+ - [ ] Printer tile error state
53
+ - [ ] Printer tile printing state
54
+ - [ ] Printer tile idle state
55
+
56
+ #### Printer Grid - Toolbar
57
+ - [x] Floor selection tabs
58
+ - [x] Tag filter dropdown
59
+ - [x] Printer type filter dropdown
60
+ - [x] Sort mode toggle (position/name)
61
+ - [ ] Auto Place button (with unplaced printers)
62
+ - [ ] Unplaced printers menu
63
+ - [ ] Grid size controls
64
+ - [x] Grid settings menu
65
+
66
+ ### Printer List
67
+ - [x] List view with printers
68
+ - [x] Empty state
69
+ - [x] Create printer button
70
+ - [x] Printer data table
71
+ - [ ] Printer row expanded view
72
+ - [ ] Printer actions menu
73
+ - [ ] Tag chips on printer
74
+ - [ ] Floor assignment
75
+ - [ ] Camera assignment
76
+ - [ ] Printer type column
77
+ - [ ] Printer status column
78
+ - [ ] Last seen column
79
+ - [ ] Batch selection
80
+ - [ ] Search/filter bar
81
+
82
+ ### Camera Grid
83
+ - [x] Camera grid with cameras
84
+ - [x] Empty state
85
+ - [x] Create camera dialog
86
+ - [ ] Camera tile
87
+ - [ ] Camera tile loading state
88
+ - [ ] Camera tile error state
89
+ - [ ] Fullscreen camera view
90
+ - [ ] Camera settings menu
91
+
92
+ ### Print Jobs
93
+ - [x] Jobs list
94
+ - [x] Empty state
95
+ - [x] Job details dialog
96
+ - [x] Filter by status
97
+ - [ ] Job card/list item
98
+ - [ ] Job progress bar
99
+ - [ ] Job actions menu
100
+ - [ ] Job statistics
101
+
102
+ ### Queue
103
+ - [x] Queue with jobs
104
+ - [x] Empty queue
105
+ - [x] Reordering items
106
+ - [x] Context menu
107
+ - [ ] Queue item details
108
+ - [ ] Move to top/bottom actions
109
+ - [ ] Remove from queue
110
+
111
+ ### Files
112
+ - [x] File browser
113
+ - [x] Empty state
114
+ - [x] File upload
115
+ - [x] Grid view
116
+ - [x] List view
117
+ - [x] File context menu
118
+ - [x] Print dialog from file
119
+ - [ ] File card/list item
120
+ - [ ] Folder navigation
121
+ - [ ] File search
122
+ - [ ] File details panel
123
+ - [ ] File preview
124
+
125
+ ---
126
+
127
+ ## Settings Pages
128
+
129
+ ### Settings Overview
130
+ - [x] Settings navigation menu
131
+ - [x] Settings home/overview
132
+
133
+ ### Floors Settings
134
+ - [x] Floor list with drag-to-reorder
135
+ - [x] Create New Floor button
136
+ - [ ] Floor expansion panel (expanded)
137
+ - [ ] Edit floor name inline
138
+ - [ ] Edit floor order inline
139
+ - [ ] Delete floor button
140
+ - [ ] Manage on grid button
141
+
142
+ ### Printer Settings
143
+ - [x] Printer default settings page
144
+ - [ ] Printer timeout settings
145
+ - [ ] Printer defaults form
146
+ - [ ] API polling interval
147
+ - [ ] Temperature check interval
148
+
149
+ ### Emergency Commands Settings
150
+ - [x] Emergency commands page
151
+ - [ ] M112 emergency stop section
152
+ - [ ] Custom emergency commands
153
+ - [ ] Emergency command editor
154
+
155
+ ### Server Protection Settings
156
+ - [x] Server protection page
157
+ - [ ] Login required toggle
158
+ - [ ] Registration enabled toggle
159
+ - [ ] Whitelist settings
160
+ - [ ] IP whitelist table
161
+
162
+ ### User Management Settings
163
+ - [x] User list
164
+ - [ ] User table/cards
165
+ - [ ] User roles display
166
+ - [ ] Create user button
167
+ - [ ] Edit user dialog
168
+ - [ ] Delete user confirmation
169
+ - [ ] User permissions matrix
170
+
171
+ ### Account Settings
172
+ - [x] Account settings page
173
+ - [ ] Change password form
174
+ - [ ] Update profile form
175
+ - [ ] Session management
176
+
177
+ ### Software Upgrade Settings
178
+ - [x] Software upgrade page
179
+ - [ ] Current version display
180
+ - [ ] Check for updates button
181
+ - [ ] Upgrade available notification
182
+ - [ ] Upgrade progress
183
+
184
+ ### Diagnostics Settings
185
+ - [x] Diagnostics page
186
+ - [ ] Sentry diagnostics toggle
187
+ - [ ] Log viewer
188
+ - [ ] System information
189
+ - [ ] Database stats
190
+
191
+ ### Experimental Settings
192
+ - [x] Experimental features page
193
+ - [ ] Feature flags list
194
+ - [ ] Multi-camera support toggle
195
+ - [ ] Experimental client support toggle
196
+ - [ ] Moonraker support toggle
197
+ - [ ] PrusaLink support toggle
198
+
199
+ ### Slicer Integration Settings
200
+ - [x] Slicer integration page
201
+ - [ ] Upload to slicer settings
202
+ - [ ] Slicer API configuration
203
+
204
+ ### SocketIO Debug Settings
205
+ - [x] SocketIO debug page
206
+ - [ ] Connection status
207
+ - [ ] Message log
208
+ - [ ] Event inspector
209
+
210
+ ### About Settings
211
+ - [x] About page
212
+ - [ ] Version information
213
+ - [ ] License information
214
+ - [ ] Credits
215
+ - [ ] Links to documentation
216
+
217
+ ---
218
+
219
+ ## Dialogs & Modals
220
+
221
+ ### Printer Dialogs
222
+ - [x] Add/Update Printer Dialog - Create mode
223
+ - [ ] Add/Update Printer Dialog - Edit mode
224
+ - [ ] Add/Update Printer Dialog - Duplicate mode
225
+ - [ ] Printer Test Connection Dialog
226
+ - [ ] Printer Type Dropdown
227
+ - [ ] Force Save Warning Dialog
228
+ - [ ] Printer Control Dialog
229
+ - [ ] Printer Settings Dialog
230
+
231
+ ### Floor Dialogs
232
+ - [x] Add/Update Floor Dialog - Create mode
233
+ - [ ] Add/Update Floor Dialog - Edit mode
234
+ - [ ] Edit Floor Panel (side panel)
235
+ - [ ] Delete Floor Confirmation
236
+
237
+ ### Camera Dialogs
238
+ - [x] Add/Update Camera Dialog - Create mode
239
+ - [ ] Add/Update Camera Dialog - Edit mode
240
+ - [ ] Delete Camera Confirmation
241
+
242
+ ### File Dialogs
243
+ - [x] File Upload Dialog
244
+ - [ ] File Details Dialog
245
+ - [ ] File Print Dialog
246
+ - [ ] Delete File Confirmation
247
+ - [ ] File Preview Dialog
248
+
249
+ ### Tag Dialogs
250
+ - [ ] Manage Tags Dialog
251
+ - [ ] Create Tag Dialog
252
+ - [ ] Edit Tag Dialog
253
+ - [ ] Delete Tag Confirmation
254
+
255
+ ### Import/Export
256
+ - [ ] YAML Import Panel
257
+ - [ ] YAML Export Panel
258
+ - [ ] OctoFarm Import Panel
259
+ - [ ] Import Preview
260
+
261
+ ### Job Dialogs
262
+ - [x] Job Details Dialog
263
+ - [ ] Start Print Dialog
264
+ - [ ] Stop Print Confirmation
265
+
266
+ ---
267
+
268
+ ## Menus & Dropdowns
269
+
270
+ ### Context Menus
271
+ - [x] Printer context menu (grid)
272
+ - [x] Printer context menu (list)
273
+ - [x] File context menu
274
+ - [x] Job context menu
275
+ - [x] Queue item context menu
276
+ - [ ] Camera context menu
277
+ - [ ] Tag context menu
278
+
279
+ ### Dropdown Menus
280
+ - [x] Printer Type Dropdown
281
+ - [x] Tag Filter Dropdown
282
+ - [x] Printer Type Filter Dropdown
283
+ - [ ] Floor Dropdown
284
+ - [ ] Camera Dropdown
285
+ - [ ] Sort Options Dropdown
286
+
287
+ ### Action Menus
288
+ - [ ] Jobs Menu (bulk actions)
289
+ - [ ] Printer Status Menu
290
+ - [ ] Batch Operations Menu
291
+
292
+ ---
293
+
294
+ ## UI Components
295
+
296
+ ### Navigation
297
+ - [ ] Top navigation bar
298
+ - [ ] Sidebar navigation
299
+ - [ ] Breadcrumbs
300
+ - [ ] Mobile navigation drawer
301
+
302
+ ### Common Elements
303
+ - [ ] Loading spinners
304
+ - [ ] Error messages
305
+ - [ ] Success snackbars
306
+ - [ ] Warning alerts
307
+ - [ ] Info tooltips
308
+ - [ ] Empty state illustrations
309
+ - [ ] Skeleton loaders
310
+
311
+ ### Forms
312
+ - [x] Login form
313
+ - [x] Registration form
314
+ - [x] Create printer form
315
+ - [x] Create floor form
316
+ - [x] Create camera form
317
+ - [ ] Search bars
318
+ - [ ] Filter panels
319
+ - [ ] Validation error states
320
+
321
+ ---
322
+
323
+ ## Summary Statistics
324
+
325
+ ### Overall Coverage
326
+ - **Total Test Suites**: 11 (00-10)
327
+ - **Total Screenshot Tests**: 76
328
+ - **Main Views Covered**: 9/9 (100%)
329
+ - **Settings Pages Covered**: 13/13 (100%)
330
+ - **Major Dialogs Covered**: ~30%
331
+ - **Component Variations Covered**: ~25%
332
+
333
+ ### Coverage by Category
334
+ - ✅ **Authentication**: 5/5 tests (100%)
335
+ - ✅ **Dashboard**: 4/4 tests (100%)
336
+ - ⚠️ **Printer Grid**: 7/15 possible (47%)
337
+ - ⚠️ **Printer List**: 8/12 possible (67%)
338
+ - ⚠️ **Camera Grid**: 6/8 possible (75%)
339
+ - ✅ **Print Jobs**: 7/7 tests (100%)
340
+ - ✅ **Queue**: 5/5 tests (100%)
341
+ - ⚠️ **Files**: 8/10 possible (80%)
342
+ - ✅ **Settings**: 13/13 tests (100%)
343
+ - ⚠️ **Dialogs**: 13/30+ possible (~43%)
344
+
345
+ ### Priority for Next Tests
346
+ 1. **High Priority** - Missing critical UI states:
347
+ - [ ] Printer tile states (printing, idle, error)
348
+ - [ ] Dialog edit modes (update vs create)
349
+ - [ ] Error states and validation
350
+ - [ ] Loading states
351
+
352
+ 2. **Medium Priority** - Nice to have variations:
353
+ - [ ] Component hover/focus states
354
+ - [ ] Expanded/collapsed states
355
+ - [ ] Mobile/responsive views
356
+ - [ ] Dark mode variations
357
+
358
+ 3. **Low Priority** - Edge cases:
359
+ - [ ] Empty states for all lists
360
+ - [ ] Maximum capacity states
361
+ - [ ] Network error states
362
+ - [ ] Permission denied states
363
+
364
+ ---
365
+
366
+ ## Notes
367
+
368
+ - All tests currently run in **Desktop Chrome only** at **1920x1080**
369
+ - **Socket.IO data injection** is used to populate floors and printers
370
+ - **API mocking** is used for all HTTP endpoints
371
+ - **Camera streams** are mocked with placeholder images
372
+ - Tests use **headed mode** for debugging with `yarn screenshots:headed`
373
+
374
+ ## Future Enhancements
375
+
376
+ - [ ] Add responsive testing (mobile/tablet viewports)
377
+ - [ ] Add visual regression testing (compare against baselines)
378
+ - [ ] Add tests for printer state transitions
379
+ - [ ] Add tests for real-time updates (via Socket.IO)
380
+ - [ ] Add tests for error boundary states
381
+ - [ ] Add tests for loading states
382
+ - [ ] Add dark mode variations
383
+ - [ ] Add accessibility testing