Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Update README.md spelling - #6

Merged
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo
Sep 18, 2023
Merged

Update README.md spelling#6
MikeShi42 merged 1 commit into
mainfrom
mikeshi/fix-readme-typo

Conversation

@MikeShi42

Copy link
Copy Markdown
Contributor

No description provided.

@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ac03d7c

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@MikeShi42
MikeShi42 merged commit 70d5aa9 into mainSep 18, 2023
@MikeShi42
MikeShi42 deleted the mikeshi/fix-readme-typo branch February 14, 2024 02:07
mlsalcedo pushed a commit to mlsalcedo/hyperdx that referenced this pull request Feb 27, 2026
Update appVersion to 2.7.1 in Jenkinsfile and add version update reminder in UPGRADE.md
knudtty pushed a commit that referenced this pull request Apr 16, 2026
abhiroop93 added a commit to ShareChat/hyperdx that referenced this pull request Apr 28, 2026
…026-04-28
customizations 1-8 implemented and verified:
- #1 live tail feature flag + configurable duration
- #2 autocomplete top-N display (pagination removed)
- hyperdxio#3 per-keystroke clickhouse prefix search + includes() filtering +
configurable date range (NEXT_PUBLIC_AUTOCOMPLETE_DATE_RANGE_MS)
- hyperdxio#4 privileged-user access gate for team settings
- hyperdxio#5 standard otel sdk exporter for app self-telemetry
- hyperdxio#6 google sso with domain auto-join; sso button above email/password form
- hyperdxio#7 next-runtime-env standalone __ENV.js generation at container startup
- hyperdxio#8 live tail configurable refresh interval (15m/30m/1h)
alex-fedotyev added a commit that referenced this pull request May 6, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
alex-fedotyev added a commit that referenced this pull request May 8, 2026
The three failing dashboard-container tests in CI shard 1 came down to
two distinct races:
1. Tests #3 (line 112) and #5 (line 194) read getActiveTabsParam()[id]
synchronously after Add Tab and after tab switches. nuqs flushes URL
state asynchronously, so the read fires before the param is written.
Wrap each sync read in expect.poll, mirroring the fix in PR #2209.
2. Test #6 (line 231) paired toggleGroupBordered(idA) with
addTabToGroup(idB) back-to-back. Both setDashboard calls produce()
from the same pre-mutation snapshot of the React Query cache, so
the second PATCH overwrites the first; the toggle is silently
dropped. The save-and-reload assertion then sees the wrong state
(or, when goto fires before the PATCH lands, no state at all).
Narrow the round-trip to a single mutation per step (addTabToGroup
on group B), wait for networkidle before navigating away, capture
the dashboard id from the URL while we are still on the page, and
use expect.poll for the post-reload getGroupOrder assertion. The
bordered toggle stays covered by the dedicated in-page test at
line 78. The underlying back-pressure race is tracked separately
in #2216.
kodiakhqBot pushed a commit that referenced this pull request May 26, 2026
…drag) (#2205)
## Summary
Follow-up E2E coverage for PR #2015 (the unified `DashboardContainer`
that replaced the legacy section/group concept). Drew explicitly asked
for this in his top-level review on #2015 ("Can you confirm we have
followup issues/tickets covering... 2. New E2E tests covering the new
functionality"). Unit coverage landed in #2015 itself; this PR adds
the missing browser-level coverage.
The container UX has four moving pieces, all exercised here:
collapsible (chevron + URL state), bordered (overflow-menu toggle +
inline border style), tabs (tab bar appearance, tab switching, URL
state), and drag-to-reorder via @dnd-kit. Each test step cites the
source line that defines the behavior so a reviewer can double-check
the assertion matches the implementation.
### Test cases
1. Group renders with default collapsible chevron and bordered style;
chevron toggles `aria-expanded`.
2. Toggling Hide Border / Show Border via the overflow menu flips the
inline border style and the menu label.
3. Adding a tab brings the tab bar (1-tab groups don't render it),
switching tabs updates `?activeTabs` and `aria-selected`.
4. `?collapsed` and `?expanded` URL params survive reload and restore
per-viewer state.
5. `?activeTabs` URL param survives reload and restores the active
tab.
6. Save-and-reload round-trip preserves the containers list and the
second tab on group B.
7. Drag-to-reorder: drag-onto-self is a no-op (the DnD guard at
`DashboardDndContext.tsx:67-70`); dragging A onto C in `[A, B, C]`
yields `[B, C, A]` (arrayMove semantics) and the new order
persists across navigation.
### What changed since the first push
- Tests #3 and #5 wrap `getActiveTabsParam()[id]` reads in
`expect.poll(...)` because `nuqs` flushes URL state asynchronously
after `Add Tab` and tab switches. This is the same race pattern
the heatmap drag-select e2e (PR #2209) hit.
- Test #6 was narrowed to a single mutation per step (`addTabToGroup`
on group B) and now waits for `networkidle` before navigating away.
The earlier version paired a `toggleGroupBordered(idA)` with
`addTabToGroup(idB)` back-to-back; the resulting concurrent
`setDashboard` calls clobber each other because the second
`produce` reads the same pre-mutation snapshot. That underlying
race is tracked in #2216. Bordered round-trip is still covered in
isolation by test #2.
### Side fixes pulled in
- `DashboardPage.ts` page-object selector was still pointing at the
stale `add-new-section-menu-item` testid; PR #2015 renamed it to
`add-new-group-menu-item`. No existing spec exercised `addSection`,
so this hadn't surfaced. Renamed the locator and the helper from
`addSection` -> `addGroup`.
- `DashboardContainer.tsx` adds `data-testid="group-add-tab-${id}"`
on the existing Add Tab menu item so the spec doesn't have to
match Mantine menu text. One-line non-behavior change.
### Tier
Predicted **Tier 2** by the local classifier: 1 production file,
10 production lines (the testid addition), no API/router/model
touch, single-layer (`packages/app/`). Test files are excluded from
the tier calculation per the classifier rules.
### Out of scope
- Concurrent-mutation back-pressure on `setDashboard` (PATCH clobber).
Tracked in #2216.
- Multi-user URL state isolation (covered by
`dashboardSections.test.tsx` unit tests).
- Alert-dot indicators (covered by `DashboardContainer.test.tsx`).
- Legacy `type: "section"` migration (one-time data shape; covered
by `dashboardSections.test.tsx`).
- Tile drag-reorder (uses `react-grid-layout`, not the new
`@dnd-kit` container DnD).
## Test plan
- [x] `yarn lint` clean.
- [x] `yarn tsc --noEmit` clean.
- [x] `npx playwright test --list tests/e2e/features/dashboard-container.spec.ts` lists all 7 cases.
- [x] `prose-lint` clean against `origin/main`.
- [x] Local tier prediction: **Tier 2**.
- [ ] CI: full E2E shard run on this branch.
Refs PR #2015. Follow-up race tracked in #2216.
Sign up for freeto 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

@MikeShi42@wrn14897