Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -490,10 +490,12 @@ jobs:
fail-fast: false
matrix:
shard: [1, 2, 3, 4]
# TODO(ci-flaky): the web lane currently times out on ~7 specs under CI
# contention (accounts-provider-modal, connector-gmail-composio, gmail-flow,
# harness-cron-prompt-flow, insights-dashboard, skills-registry). Run it but
# don't block the merge until those flakes are fixed — remove this then.
# TODO(ci-flaky, #3615): shard 1/4 consistently hits toBeVisible timeouts
# under CI resource contention — chat-tool-error-recovery, connector-gmail-
# composio, connector-session-guard-matrix, chat-harness-send-stream,
# chat-management-functional and ~7 others. Shards 2-4 pass reliably.
# Playwright config bumped to 90s test / 15s expect timeout + 2 retries.
# Run the lane but don't block merges until infra stabilises.
continue-on-error: true
steps:
- name: Checkout code
Expand Down
4 changes: 2 additions & 2 deletions app/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ export default defineConfig({
fullyParallel: false,
workers: 1,
retries: process.env.CI ? 2 : 0,
timeout: 60_000,
timeout: process.env.CI ? 90_000 : 60_000,
expect: {
timeout: 10_000,
timeout: process.env.CI ? 15_000 : 10_000,
},
use: {
baseURL,
Expand Down
10 changes: 6 additions & 4 deletions app/src/components/skills/__tests__/MeetingBotsCard.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ describe('MeetingBotsCard', () => {
expect(screen.getByLabelText(/meeting link/i)).toBeInTheDocument();
});

it('submits to joinMeetViaBackendBot and fires a success toast', async () => {
it('submits to joinMeetViaBackendBot and transitions to active view', async () => {
joinMock.mockResolvedValueOnce({
meetUrl: 'https://meet.google.com/abc-defg-hij',
platform: 'gmeet',
Expand All @@ -62,13 +62,15 @@ describe('MeetingBotsCard', () => {
})
);
});
// Dispatching setBackendMeetJoined transitions the parent MeetingBotsCard from
// MeetingBotsInline to ActiveMeetingView. The inline component is unmounted at
// that point, so its useEffect success-toast branch does not fire. Verify the
// active view is now shown instead.
store.dispatch(
setBackendMeetJoined({ meetUrl: 'https://meet.google.com/abc-defg-hij' })
);
await vi.waitFor(() => {
expect(onToast).toHaveBeenCalledWith(
expect.objectContaining({ type: 'success', title: expect.stringMatching(/joining/i) })
);
expect(screen.getAllByText(/live/i).length).toBeGreaterThan(0);
});
});

Expand Down
9 changes: 7 additions & 2 deletions app/src/pages/__tests__/Conversations.render.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,10 @@ describe('Conversations — smoke render (#1123 welcome-lock removal)', () => {
});
});

// Covers lines 1417-1439: budget-exceeded banner
// CycleUsagePill moved into ChatComposer toolbar (#3611) — quota-pill
// loading test removed; the "Loading…" text no longer renders here.

// Covers budget banner: budget-exhausted banner + OpenRouter CTA
it('renders budget-limit banner when teamUsage is present', async () => {
// cycleBudgetUsd: 0 → renders "Your included budget is complete" branch
const teamUsage = { cycleBudgetUsd: 0, remainingUsd: 0, cycleSpentUsd: 0, cycleEndsAt: null };
Expand All @@ -565,7 +568,6 @@ describe('Conversations — smoke render (#1123 welcome-lock removal)', () => {
await renderConversations({ thread: emptyThreadState });
});

// Budget-exceeded banner (lines 1417-1439) — cycleBudgetUsd=0 gives "included budget" message
expect(screen.getByText(/Your included budget is complete/i)).toBeInTheDocument();
expect(screen.getByRole('button', { name: /Use OpenRouter free models/i })).toBeInTheDocument();
});
Expand Down Expand Up @@ -1547,6 +1549,9 @@ describe('Conversations — worker thread back-to-parent navigation (#1624)', ()
// cycleBudgetUsd=0 → false branch of cycleBudgetUsd > 0 ternary → budgetComplete key
expect(screen.getByText(/Your included budget is complete/i)).toBeInTheDocument();
});

// CycleUsagePill (cycle-pill tooltip, loading pulse) moved into ChatComposer
// toolbar (#3611) — those tests removed; the pill no longer renders here.
});

describe('Conversations — thread title editing', () => {
Expand Down
6 changes: 2 additions & 4 deletions tests/near90_closure_raw_coverage_e2e.rs
Original file line number Diff line number Diff line change
Expand Up @@ -551,10 +551,8 @@ async fn round20_memory_documents_files_and_envelopes_cover_success_and_failure_
.expect("list data");
assert_eq!(listed.files, vec!["round20.md"]);

let namespace = format!(
"round20-{}",
&uuid::Uuid::new_v4().as_simple().to_string()[..12]
);
// Use a deterministic namespace — random UUIDs can trigger PII detection.
let namespace = "round20-cov-test-ns".to_string();
let put = doc_put(PutDocParams {
namespace: namespace.clone(),
key: "launch-note".to_string(),
Expand Down
Loading