/ src / nested_workspaces_advanced.feature
nested_workspaces_advanced.feature
  1  Feature: Advanced Nested Workspace Features and Integration
  2    As a power user of the chrome-edge-workspaces extension
  3    I want advanced nested workspace capabilities
  4    So that I can manage complex multi-project workflows efficiently
  5  
  6    Background:
  7      Given the chrome-edge-workspaces extension is installed
  8      And nested workspace functionality is enabled
  9  
 10    # ==========================================
 11    # Bookmark Integration with Nested Structure
 12    # ==========================================
 13  
 14    Scenario: Save nested workspace hierarchy to bookmarks
 15      Given "Save workspaces to bookmarks" is enabled in settings
 16      And the following workspace hierarchy exists:
 17        | Python Research (parent)  |
 18        |   - asyncIO               |
 19        |   - metaProgramming       |
 20      When the workspaces are saved to bookmarks
 21      Then the bookmark structure should be:
 22        | Other bookmarks                               |
 23        |   > Edge Workspaces (read-only)               |
 24        |     > Python Research                         |
 25        |       > asyncIO                               |
 26        |         - [tab bookmarks]                     |
 27        |       > metaProgramming                       |
 28        |         - [tab bookmarks]                     |
 29  
 30    Scenario: Parent workspace bookmark folder creation
 31      Given "Save workspaces to bookmarks" is enabled
 32      And a parent workspace "Python Research" with no children exists
 33      When the workspace is saved to bookmarks
 34      Then an empty folder "Python Research" should be created in bookmarks
 35      And the folder should have metadata indicating it's a parent workspace
 36  
 37    # ==========================================
 38    # Sync Across Devices
 39    # ==========================================
 40  
 41    Scenario: Sync nested workspace structure across devices
 42      Given I am logged into Chrome sync on Device A
 43      And the following workspace hierarchy exists on Device A:
 44        | Python Research (parent)  |
 45        |   - asyncIO               |
 46        |   - metaProgramming       |
 47      When I wait for sync to complete
 48      And I open the extension on Device B logged into the same account
 49      Then the complete workspace hierarchy should appear on Device B
 50      And all parent-child relationships should be preserved
 51  
 52    Scenario: Handle sync conflict with modified hierarchy
 53      Given the following workspace hierarchy exists on Device A:
 54        | Python Research (parent)  |
 55        |   - asyncIO               |
 56      And the same hierarchy exists on Device B
 57      When I add "metaProgramming" to "Python Research" on Device A
 58      And I add "generatorExpressions" to "Python Research" on Device B
 59      And both devices sync
 60      Then the workspace hierarchy should merge to contain:
 61        | Python Research (parent)      |
 62        |   - asyncIO                   |
 63        |   - metaProgramming           |
 64        |   - generatorExpressions      |
 65  
 66    # ==========================================
 67    # Context Switching with Session Persistence
 68    # ==========================================
 69  
 70    Scenario: Restore active context after browser restart
 71      Given the following workspace hierarchy exists:
 72        | Python Research (parent)  |
 73        |   - asyncIO               |
 74        |   - metaProgramming       |
 75      And "Python Research" context is active with 2 open windows
 76      When I close the browser completely
 77      And I reopen the browser
 78      And I open the extension popup
 79      Then "Python Research" should still be marked as the active context
 80      And the 2 workspace windows should be restored
 81  
 82    Scenario: Remember window positions for context switch
 83      Given the following workspace hierarchy exists:
 84        | Python Research (parent)  |
 85        |   - asyncIO               |
 86        |   - metaProgramming       |
 87      And "asyncIO" window is positioned at coordinates (0, 0) with size 800x600
 88      And "metaProgramming" window is positioned at (810, 0) with size 1000x800
 89      When I switch from "Python Research" to another context
 90      And I switch back to "Python Research" context
 91      Then "asyncIO" should reopen at position (0, 0) with size 800x600
 92      And "metaProgramming" should reopen at position (810, 0) with size 1000x800
 93  
 94    # ==========================================
 95    # Keyboard Shortcuts for Nested Workspaces
 96    # ==========================================
 97  
 98    Scenario: Assign keyboard shortcut to switch to specific parent workspace
 99      Given the following parent workspaces exist:
100        | Python Research |
101        | Project Z       |
102      When I assign keyboard shortcut "Ctrl+Shift+1" to "Python Research"
103      And I press "Ctrl+Shift+1"
104      Then the context should switch to "Python Research"
105      And all child workspaces should open
106  
107    Scenario: Quick switch between recently used contexts
108      Given the following parent workspaces exist:
109        | Python Research |
110        | Project Z       |
111        | JavaScript Work |
112      And I have recently switched through these contexts in order:
113        | Python Research  |
114        | Project Z        |
115        | Python Research  |
116      When I press "Ctrl+Shift+Tab" (previous context shortcut)
117      Then the context should switch to "Project Z"
118  
119    Scenario: Navigate parent workspace list with keyboard
120      Given the following parent workspaces exist:
121        | Python Research |
122        | Project Z       |
123        | JavaScript Work |
124      And the extension popup is open
125      When I press the "Down Arrow" key
126      Then the next parent workspace should be highlighted
127      When I press "Enter"
128      Then the highlighted workspace context should open
129  
130    # ==========================================
131    # Workspace Templates
132    # ==========================================
133  
134    Scenario: Create parent workspace from template
135      Given a workspace template exists with structure:
136        | Development Project (parent)  |
137        |   - Documentation             |
138        |   - Code Repository           |
139        |   - Testing                   |
140      When I create a new workspace from template
141      And I name it "Mobile App Project"
142      Then a parent workspace "Mobile App Project" should be created
143      And it should contain 3 empty child workspaces:
144        | Documentation   |
145        | Code Repository |
146        | Testing         |
147  
148    Scenario: Save current hierarchy as template
149      Given the following workspace hierarchy exists:
150        | Python Research (parent)  |
151        |   - asyncIO               |
152        |   - metaProgramming       |
153      When I right-click on "Python Research"
154      And I select "Save as Template"
155      And I name the template "Python Development Template"
156      Then the template should be saved
157      And it should be available in the template list
158  
159    # ==========================================
160    # Workspace Statistics and Insights
161    # ==========================================
162  
163    Scenario: View parent workspace statistics
164      Given the following workspace hierarchy exists:
165        | Python Research (parent)  |
166        |   - asyncIO (15 tabs)     |
167        |   - metaProgramming (8)   |
168      When I right-click on "Python Research"
169      And I select "View Statistics"
170      Then a statistics panel should display:
171        | Total child workspaces: 2       |
172        | Total tabs: 23                  |
173        | Last accessed: [timestamp]      |
174        | Total time in context: 5.5 hrs  |
175  
176    Scenario: Track context switch history
177      Given I have switched contexts multiple times:
178        | Python Research | 3 times  |
179        | Project Z       | 5 times  |
180      When I view workspace history
181      Then the history should show:
182        | Project Z - 5 switches, Last: [timestamp]       |
183        | Python Research - 3 switches, Last: [timestamp] |
184  
185    # ==========================================
186    # Bulk Operations on Nested Workspaces
187    # ==========================================
188  
189    Scenario: Bulk add workspaces to parent via selection
190      Given the following standalone workspaces exist:
191        | asyncIO              |
192        | metaProgramming      |
193        | generatorExpressions |
194        | React Tutorials      |
195      When I select workspaces using checkboxes:
196        | asyncIO              |
197        | metaProgramming      |
198        | generatorExpressions |
199      And I click "Add to Parent" in the bulk actions menu
200      And I select parent workspace "Python Research"
201      Then all 3 selected workspaces should be added to "Python Research"
202      And "React Tutorials" should remain standalone
203  
204    Scenario: Bulk remove children from parent
205      Given the following workspace hierarchy exists:
206        | Python Research (parent)      |
207        |   - asyncIO                   |
208        |   - metaProgramming           |
209        |   - generatorExpressions      |
210      When I expand "Python Research"
211      And I select children using checkboxes:
212        | asyncIO              |
213        | generatorExpressions |
214      And I click "Remove from Parent" in the bulk actions menu
215      Then "asyncIO" and "generatorExpressions" should become standalone
216      And "metaProgramming" should remain under "Python Research"
217  
218    # ==========================================
219    # Smart Context Suggestions
220    # ==========================================
221  
222    Scenario: Suggest context based on time of day
223      Given the following workspace hierarchies exist:
224        | Work Projects (parent)    |
225        |   - Email                 |
226        |   - CRM                   |
227        | Personal (parent)         |
228        |   - Social Media          |
229        |   - Shopping              |
230      And I typically use "Work Projects" during 9 AM - 5 PM
231      And the current time is 9:30 AM
232      When I open the extension popup
233      Then "Work Projects" should be highlighted as a suggested context
234      And a notification should suggest: "Switch to Work Projects context?"
235  
236    Scenario: Suggest context based on common tab domains
237      Given the following workspace hierarchies exist:
238        | Python Research (parent)  |
239        |   - asyncIO               |
240        | JavaScript Projects       |
241        |   - React Tutorials       |
242      And "asyncIO" commonly contains tabs from "python.org"
243      When I open a tab to "https://docs.python.org"
244      Then a notification should suggest: "Open in Python Research context?"
245      And clicking "Yes" should switch to that context
246  
247    # ==========================================
248    # Integration with Tab Discarding/Suspension
249    # ==========================================
250  
251    Scenario: Suspend inactive child workspaces within active context
252      Given the following workspace hierarchy exists:
253        | Python Research (parent)  |
254        |   - asyncIO               |
255        |   - metaProgramming       |
256        |   - generatorExpressions  |
257      And "Python Research" context is active
258      And "asyncIO" window has been inactive for 30 minutes
259      When automatic tab suspension is enabled
260      Then tabs in "asyncIO" should be suspended to save memory
261      And tabs in active child workspaces should remain unsuspended
262  
263    Scenario: Prevent suspension of transcendent workspaces
264      Given a transcendent workspace "Main" is open
265      And the workspace has been inactive for 30 minutes
266      When automatic tab suspension triggers
267      Then "Main" workspace tabs should not be suspended
268      And a log entry should record: "Transcendent workspace excluded from suspension"
269  
270    # ==========================================
271    # Accessibility Features
272    # ==========================================
273  
274    Scenario: Screen reader announces parent workspace structure
275      Given the following workspace hierarchy exists:
276        | Python Research (parent)  |
277        |   - asyncIO               |
278        |   - metaProgramming       |
279      And a screen reader is active
280      When I navigate to "Python Research" in the workspace list
281      Then the screen reader should announce:
282        """
283        Parent workspace: Python Research
284        Contains 2 child workspaces
285        Collapsed. Press Enter to expand
286        """
287  
288    Scenario: High contrast mode for nested workspace indicators
289      Given high contrast mode is enabled in browser
290      When I view the workspace list with nested workspaces
291      Then parent workspace icons should have high contrast styling
292      And child workspace indentation should be clearly visible
293      And tree connector lines should be visible in high contrast
294  
295    # ==========================================
296    # Performance and Optimization
297    # ==========================================
298  
299    Scenario: Efficiently load large nested workspace structures
300      Given a parent workspace with 50 child workspaces
301      And each child workspace has 20 tabs
302      When I open the extension popup
303      Then the workspace list should load within 500ms
304      And child workspaces should be lazy-loaded when expanding parent
305  
306    Scenario: Optimize memory usage for inactive contexts
307      Given the following parent workspaces exist:
308        | Python Research |
309        | Project Z       |
310        | JavaScript Work |
311      And only "Python Research" context is active
312      When I check memory usage
313      Then inactive context metadata should be minimal in memory
314      And full workspace data should only be loaded for active context
315  
316    # ==========================================
317    # Collaboration Features
318    # ==========================================
319  
320    Scenario: Share parent workspace with team member
321      Given the following workspace hierarchy exists:
322        | Team Project (parent)     |
323        |   - Sprint Planning       |
324        |   - Code Reviews          |
325        |   - Documentation         |
326      When I right-click on "Team Project"
327      And I select "Generate Share Link"
328      Then a shareable link should be generated
329      And the link should include the complete hierarchy structure
330  
331    Scenario: Import shared parent workspace hierarchy
332      Given I receive a shared workspace link for:
333        | Team Project (parent)     |
334        |   - Sprint Planning       |
335        |   - Code Reviews          |
336      When I click "Import Shared Workspace"
337      And I paste the shared link
338      Then the complete hierarchy should be imported
339      And all tabs should be restored with their original URLs
340  
341    # ==========================================
342    # Migration and Backward Compatibility
343    # ==========================================
344  
345    Scenario: Migrate existing workspaces to nested structure
346      Given I have 10 existing standalone workspaces
347      And nested workspace feature is newly enabled
348      When I open the extension
349      Then all existing workspaces should remain functional
350      And I should see an option to "Organize into Parent Workspaces"
351      When I select that option
352      Then a migration wizard should help organize existing workspaces
353  
354    Scenario: Export workspaces in legacy format without parent data
355      Given the following workspace hierarchy exists:
356        | Python Research (parent)  |
357        |   - asyncIO               |
358      When I export workspaces
359      And I select "Legacy Format (v1.x compatible)"
360      Then the export should contain child workspaces as standalone
361      And parent-child relationships should not be included
362      And a warning should indicate structure will be flattened
363  
364    # ==========================================
365    # Advanced Context Switching Rules
366    # ==========================================
367  
368    Scenario: Context switch with conditional rules
369      Given the following workspace hierarchy exists:
370        | Python Research (parent)  |
371        |   - asyncIO               |
372        |   - metaProgramming       |
373      And a transcendent workspace "Email" is open
374      And I set a rule: "When switching contexts, close tabs with domain 'localhost'"
375      When I have tabs open to "localhost:3000" and "github.com"
376      And I switch to "Python Research" context
377      Then the "localhost:3000" tab should be closed
378      And the "github.com" tab should remain open
379      And the "Email" workspace should remain open
380  
381    Scenario: Dry run context switch
382      Given the following workspace hierarchies exist:
383        | Python Research (parent)  |
384        |   - asyncIO               |
385        | Project Z (parent)        |
386        |   - Frontend              |
387      And "Python Research" context is active
388      When I right-click on "Project Z"
389      And I select "Preview Context Switch"
390      Then a preview panel should show:
391        | Windows to close: 1 (asyncIO)     |
392        | Windows to open: 1 (Frontend)     |
393        | Transcendent windows: 0           |
394        | Estimated switch time: 2 seconds  |
395      And no actual switching should occur until confirmed