Skip to content

Dev to Stage sync - #153

Merged
susrisha merged 11 commits into
stagingfrom
develop
Oct 15, 2026
Merged

susrisha merged 11 commits into
stagingfrom
develop

Conversation

@susrisha

Copy link
Copy Markdown
Collaborator

This pull request introduces several improvements and fixes across workspace management, review editing, and user interface feedback. The most significant changes include robust handling of workspace import failures, enhanced review editor selection, improved workspace deletion feedback, and better navigation responsiveness.

Workspace Import Status Handling:

  • Workspaces now verify that a "completed" import status is truly successful by checking for failed jobs; if a failure is detected, the status is updated to "failed" for accurate dashboard reporting. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

Review Editing Improvements:

Workspace Deletion Feedback:

  • After deleting a workspace, the UI now informs the user if OSM data cleanup is still pending, improving clarity about the deletion process. The API method was updated to return the cleanup status. [1] [2] [3]

Navigation and UI Responsiveness:

  • The "Create Workspace" navigation now uses document navigation to avoid issues while the dashboard is still loading, ensuring the link remains responsive even with large workspace lists. [1] [2]

Minor Copy and Test Updates:

These changes collectively improve the reliability and usability of workspace operations and the review process, while also enhancing user feedback and interface consistency.

shweta2101 and others added 11 commits October 8, 2026 14:23
Mark the AppNavbar 'Create Workspace' nuxt-link as external (with a comment explaining document navigation to avoid overlapping with unresolved dashboard setup) and clean up its markup. Add an end-to-end test that simulates a very large /workspaces/mine request being held pending, then clicks the navbar 'Create Workspace' link while the dashboard is loading to verify the app performs a full navigation to /workspace/create and that the Create Workspace UI renders as expected.
Rename the export action text from "Start" to "Save" in the workspace export page for clearer UX. In the dashboard e2e test, remove an artificial delay and related comments, and simplify the /mine route handler to fulfill the mocked response and swallow any fulfill errors (.catch(() => {})) to avoid flaky cancellations during navigation.
Minor formatting cleanup in AppNavbar.vue (moved closing </nuxt-link> inline). Update E2E snapshot to reflect changed button label flow: when ready the button now shows "Save" instead of "Start", so the accessibility snapshot text was updated accordingly.
## DevBoard Task
https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/4310/

### Problem
The dashboard waits for both the workspace list and project-group roles
before completing page setup:
- GET /workspaces/mine
- Project-group roles request
The shared navbar is interactive while these requests are pending.
Previously, clicking Create Workspace during this interval started
another Nuxt client-side navigation.
In the failure state:
- The URL changed to /workspace/create.
- The site header remained visible.
- <main> remained empty.
- No error was displayed.
- Loading /workspace/create directly worked.
Accounts with many workspaces were more likely to encounter the issue
because /workspaces/mine took longer to complete.

### Changes implemented
- Added NuxtLink’s external option to the top-navbar Create Workspace
link.
- Preserved the existing navbar structure and mobile-menu behavior.
- Added a Playwright regression test that:
  - Simulates an account with 1,500 workspaces.
  - Delays /workspaces/mine.
  - Waits until the request is confirmed pending.
  - Clicks the top-navbar Create Workspace link.
  - Verifies /workspace/create loads successfully.
  - Verifies the Blank, TDEI, and File creation options render.

### Testing evidence
Without the fix:
```
Locator: getByRole('heading', { name: 'Create a Workspace' })
    Expected: visible
    Timeout: 10000ms
    Error: element(s) not found

    Call log:
      - Expect "toBeVisible" with timeout 10000ms
      - waiting for getByRole('heading', { name: 'Create a Workspace' })


      466 |     await expect(
      467 |       page.getByRole('heading', { name: 'Create a Workspace' })
    > 468 |     ).toBeVisible();
          |       ^
      469 |
      470 |     await expect(
      471 |       page.getByText('Blank Workspace', { exact: true })
```

Without the fix, the URL changed to /workspace/create, but the page
content did not render before Playwright’s 10-second assertion timeout.
With the fix, the page rendered successfully in repeated runs.

With the fix:

```
10 passed
```

### Impacted areas tested
- Top-navbar Create Workspace navigation while the dashboard is loading.
- Large workspace response containing 1,500 workspaces.
- Pending /workspaces/mine request.
- Authenticated full-page navigation.
- Create Workspace landing page and all three creation options.
- Repeated Chromium execution

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary
- Added NuxtLink’s `external` option to the navbar’s Create Workspace
link. This uses document navigation while dashboard setup requests are
pending.
- Added an end-to-end regression test that delays `/workspaces/mine`
with 1,500 workspaces, then checks that the Create Workspace page and
its Blank Workspace, From TDEI, and From File options appear.
- Changed the export instructions to say the button changes to “Save”
when the file is ready.

## Testing
- Added the regression test. Test execution results were not provided.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Add logic to detect import jobs that should be treated as failures even when marked completed. Introduces util/findFailedImportJob to pick the latest workspace-import job whose status is failed or whose response.success is false. Use this helper in WorkspaceJobFailureDialog and the dashboard: the dialog will prefer a failed import job when showing details, and the dashboard now re-verifies workspaces marked completed (verifyCompletedImport) and flips their importStatus to failed if a failing job is found. Also clear the verification cache on refresh. Includes unit tests for the helper and updates an E2E test to expect the additional job fetch.
## DevBoard Task
https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/4387

### Changes implemented

- A workspace marked `completed` is checked against its latest import
job.
- It displays **“Setup failed”** when the latest import job:
  - has `status: "failed"`, or
  - has `response.success: false`.
- Clicking the failed badge opens the existing failure-details dialog.
- Older failed jobs do not override a newer successful import.
- The check runs again after refreshing the dashboard.

### Areas impacted for testing

- Dashboard workspace status badge:
  - Successful import → **Ready**
  - Failed job → **Setup failed**
  - Completed job with `success: false` → **Setup failed**
- Failure-details dialog:
  - Correct message, error code, failed step, and job ID appear.
- Workspace selection:
  - Selecting another workspace checks its latest import job.
- Dashboard refresh:
  - Status is checked again after refresh.
- Regression:
- Blank, in-progress, explicitly failed, and successful workspaces
retain their existing status behavior.

### Testing completed

- Added unit tests covering:
  - Explicitly failed import jobs.
  - Completed jobs with `response.success: false`.
  - Successful latest imports overriding older failed imports.
- Added a Playwright test for a workspace marked `completed` whose
latest job has `response.success: false`.
- Visually confirmed in Playwright that:
  - The badge displays **“Setup failed. Select to view details”**.
  - Selecting the badge opens the failure-details dialog.
- The correct failure message, error code, failed step, and job ID are
displayed.
- Type checking, linting, unit tests, and the focused Playwright test
passed.

<img width="1470" height="956" alt="Screenshot 2026-10-12 at 12 11
09 PM"
src="https://github.com/user-attachments/assets/859b6c70-480e-4dbc-acce-c2a6b2b4b426"
/>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary
- Added `findFailedImportJob` to identify the latest workspace-import
job when its status is `failed` or its response has `success: false`.
- Updated the dashboard to check completed imports and mark a workspace
as failed when the latest import job indicates failure. The check can be
retried after an error and runs again after workspace refresh.
- Updated the failure-details dialog to show the failed import job when
available.
- Added unit tests for failed and successful import cases, including an
older failure followed by a newer success.
- Updated the Playwright test to verify the failure badge, dialog
details, and omission of the request token.

Test execution results were not provided.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Pass workspace type to the review overlay and toolbar and add an editor selection flow for OSW workspaces. Toolbar now shows a split "Edit Here" dropdown (Rapid 2 default and Rapid 3 beta) when rapid3Manager is available and the workspace type is 'osw'; the primary action remains Rapid 2. The edit emit/signature was extended to include the chosen editor, and the review page openEditor now accepts an editor parameter and adds an editor query param for osw navigation. Updated E2E expectations and snapshot and added unit tests for the toolbar behavior.
## DevBoard Task
https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/3949/

### Changes implemented

- Added an editor dropdown beside **Edit Here** in the Review view.
- Dropdown options:
  - **Rapid 2 (default)**
  - **Rapid 3 (beta)**
- The selected editor is included in the URL:
  - Rapid 2 -> `editor=rapid`
  - Rapid 3 -> `editor=rapid3`
- The current map location is preserved when opening either editor.
- The button label remains **Edit Here**.

### Areas impacted for testing

- Review page **Edit Here** dropdown visibility.
- Rapid 2 navigation and `editor=rapid` URL.
- Rapid 3 navigation and `editor=rapid3` URL.
- Map coordinates remain in the URL after navigation.
- Editor switching by changing `editor=rapid` to `editor=rapid3`, or
vice versa, and reloading.
- Non-OSW workspaces retain the existing single **Edit Here** button.
- Existing Review toolbar actions still work.

### Screenshots
<img width="1470" height="956" alt="Screenshot 2026-10-12 at 3 45 45 PM"
src="https://github.com/user-attachments/assets/defcfd15-2f65-4d77-83f6-3ad28cbfc7b6"
/>
<img width="1470" height="956" alt="Screenshot 2026-10-12 at 3 45 32 PM"
src="https://github.com/user-attachments/assets/649f013f-107f-4688-a3c9-09f77fe8b79c"
/>
<img width="1470" height="956" alt="Screenshot 2026-10-12 at 3 46 19 PM"
src="https://github.com/user-attachments/assets/4367762e-7592-4fd6-a380-936fc429a9f5"
/>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary

- Added a Rapid editor dropdown beside **Edit Here** for OSW workspaces
when Rapid 3 is available. The menu offers Rapid 2 and Rapid 3.
- Passed the selected editor through the review overlay and toolbar to
editor navigation. OSW navigation includes the selected `editor` query
parameter. Other workspace types retain the existing edit button and
navigation behavior.
- Updated E2E expectations and a snapshot. Added toolbar unit tests for
editor choices and emitted events.

## Tests

The changes add E2E and unit test coverage. Test execution results were
not provided.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Make workspace deletion resilient to OSM cleanup failures: introduce DeleteWorkspaceResult and change WorkspacesClient.deleteWorkspace to use Promise.allSettled so the API record deletion and the OSM cleanup are attempted in parallel. The method now throws if the primary workspace delete fails and returns { osmRequestSucceeded: boolean } to indicate whether the OSM request succeeded. Update the Delete settings panel to show an informational toast when the workspace is deleted but OSM cleanup failed. Add unit tests for the new delete behavior and an e2e test that asserts the info toast is shown when OSM cleanup returns an error.
## DevBoard Task
https://dev.azure.com/TDEI-UW/TDEI/_workitems/edit/4401/

**Changes implemented**

- Workspace deletion now handles OSM cleanup independently.
- If workspace deletion succeeds but OSM cleanup fails, the user is
redirected to the dashboard and shown an informational toast.
- Workspace API deletion failures still show the existing error
behavior.

**Testing impact**

- Successful workspace + OSM deletion.
- Successful workspace deletion with failed OSM cleanup.
- Failed primary workspace deletion.
- Dashboard redirection and persistence of the informational toast.

**Screenshot**
<img width="1470" height="956" alt="Screenshot 2026-10-14 at 11 12 06 AM
1"
src="https://github.com/user-attachments/assets/3fe7f3d8-431e-456c-a9f4-9884c9fb33cf"
/>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary

- `WorkspacesClient.deleteWorkspace` now deletes the workspace and
requests OSM cleanup in parallel. It throws if workspace deletion fails
and reports whether OSM cleanup succeeded.
- When OSM cleanup fails after workspace deletion succeeds, the delete
panel shows an informational toast and redirects to `/dashboard`.
- Added unit and end-to-end tests for OSM cleanup failure and primary
workspace deletion failure.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@coderabbitai

coderabbitai Bot commented Oct 15, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 12c2cb89-a3e2-4147-ab6c-9aba2342234f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@susrisha
susrisha merged commit f7f6a15 into staging Oct 15, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
dev — dae7c8e4 Deployed Oct 14, 2026 by github-actions[bot] via build-and-deploy #75
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants