Skip to content
Closed
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
2 changes: 2 additions & 0 deletions .github/workflows/validation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ env:
jobs:
run-tests:
runs-on: ${{ matrix.os }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]

Expand Down
26 changes: 19 additions & 7 deletions tests/integration/app_loader/app_loader_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,19 @@ import {sendInput} from '../test_case_utils.js';

const execAsync = promisify(exec);
const dirname = process.cwd();
const TEST_EXECUTION_TIMEOUT = 40000;

// Hooks install a fixture project, or remove the resulting node_modules tree
// (slow on Windows).
const INSTALL_TIMEOUT = 180_000;

// Loading an app esbuild-bundles and minifies the whole @google/adk graph, once
// per discovered entrypoint.
const TEST_EXECUTION_TIMEOUT = 120_000;

// Fixture deps are file: links to core/dev, already in ~/.npm from the
// repo-level install, so --prefer-offline resolves from cache instead of
// revalidating against the registry.
const NPM_INSTALL = 'npm install --prefer-offline --no-audit --no-fund';

describe('App loader CLI integration', () => {
describe.each(['app_ts', 'app_js', 'app_default'])(
Expand All @@ -28,8 +40,8 @@ describe('App loader CLI integration', () => {
);

beforeAll(async () => {
await execAsync('npm install', {cwd: projectPath});
}, TEST_EXECUTION_TIMEOUT);
await execAsync(NPM_INSTALL, {cwd: projectPath});
}, INSTALL_TIMEOUT);

it(
'should run app via package.json start script and get responses',
Expand Down Expand Up @@ -62,7 +74,7 @@ describe('App loader CLI integration', () => {
await fs
.unlink(path.join(projectPath, 'package-lock.json'))
.catch(() => {});
}, TEST_EXECUTION_TIMEOUT);
}, INSTALL_TIMEOUT);
},
);
});
Expand All @@ -75,9 +87,9 @@ describe('AgentLoader discovery and loading integration', () => {
let loader: AgentLoader;

beforeAll(async () => {
await execAsync('npm install', {cwd: projectPath});
await execAsync(NPM_INSTALL, {cwd: projectPath});
loader = new AgentLoader(projectPath);
}, TEST_EXECUTION_TIMEOUT);
}, INSTALL_TIMEOUT);

it(
'should discover apps vs agents across directories and standalone files',
Expand Down Expand Up @@ -138,5 +150,5 @@ describe('AgentLoader discovery and loading integration', () => {
await fs
.unlink(path.join(projectPath, 'package-lock.json'))
.catch(() => {});
}, TEST_EXECUTION_TIMEOUT);
}, INSTALL_TIMEOUT);
});
Loading