mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-27 21:08:00 +00:00
fix(ci): resolve 3 flaky CI failure categories (#3618)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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 };
|
||||
@@ -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();
|
||||
});
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user