Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
6050d39
Scaffold a goosed integration test
jamadeo Feb 12, 2026
50bced7
clean up readme
jamadeo Feb 12, 2026
4463f17
reply tests
jamadeo Feb 12, 2026
90f8440
Nearly there
jamadeo Feb 12, 2026
4cd2b40
Add a test for developer $PATH
jamadeo Feb 12, 2026
d4b1980
Merge remote-tracking branch 'origin/main' into goosed-http-integrati…
jamadeo Feb 12, 2026
a1d049e
Read it straight from the $SHELL
jamadeo Feb 12, 2026
52b9a47
don't need that
jamadeo Feb 12, 2026
700d873
Add to CI
jamadeo Feb 12, 2026
82862f4
typo
jamadeo Feb 12, 2026
9464447
Move to pr-smoke-test because we need a live provider
jamadeo Feb 12, 2026
7b16b16
it's a different binary of course
jamadeo Feb 12, 2026
f0dc5f4
more reuse
jamadeo Feb 12, 2026
dba81c7
add the key, and print response mismatches
jamadeo Feb 12, 2026
84222df
log the stream
jamadeo Feb 12, 2026
48153ed
config
jamadeo Feb 12, 2026
fe2427d
try adding a path
jamadeo Feb 12, 2026
557a52f
let's debug this
jamadeo Feb 12, 2026
3734607
see if this helps
jamadeo Feb 12, 2026
dc5c459
this was just broken
jamadeo Feb 12, 2026
48f16ab
can we read these
jamadeo Feb 12, 2026
459b7bd
exclude the node part of the path
jamadeo Feb 13, 2026
97d437e
use the constrained path to get the user path
jamadeo Feb 13, 2026
3f64308
login of course
jamadeo Feb 13, 2026
80fdc0d
REVERT ME: let's make sure this fails
jamadeo Feb 13, 2026
a2f730f
Revert "REVERT ME: let's make sure this fails"
jamadeo Feb 13, 2026
028b2fd
paths
jamadeo Feb 13, 2026
e32ffb0
clean up
jamadeo Feb 13, 2026
9c7ffd7
More clean up
jamadeo Feb 13, 2026
ec3ac0b
more clean up
jamadeo Feb 13, 2026
5c2b511
External backend
jamadeo Feb 13, 2026
33c1c79
Missing windows bits
jamadeo Feb 13, 2026
ee437b9
Apply suggestions from code review
jamadeo Feb 13, 2026
c433ca9
simplify more
jamadeo Feb 13, 2026
0eac3b7
no port
jamadeo Feb 13, 2026
08d5f6f
Use sdk type for /reply
jamadeo Feb 13, 2026
2ced089
more cleanup
jamadeo Feb 13, 2026
38d8df6
better cleanup
jamadeo Feb 13, 2026
e249f30
Keep this, it's useful
jamadeo Feb 13, 2026
bc3813e
Improve types
jamadeo Feb 13, 2026
50eb213
run the full cleanup on error
jamadeo Feb 13, 2026
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
46 changes: 44 additions & 2 deletions .github/workflows/pr-smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,22 @@ jobs:

- name: Build Binary for Smoke Tests
run: |
cargo build --bin goose
cargo build --bin goose --bin goosed

- name: Upload Binary for Smoke Tests
- name: Upload goose binary
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: goose-binary
path: target/debug/goose
retention-days: 1

- name: Upload goosed binary
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: goosed-binary
path: target/debug/goosed
retention-days: 1

smoke-tests:
name: Smoke Tests
runs-on: ubuntu-latest
Expand Down Expand Up @@ -239,3 +246,38 @@ jobs:
mkdir -p $HOME/.local/share/goose/sessions
mkdir -p $HOME/.config/goose
bash scripts/test_compaction.sh

goosed-integration-tests:
name: goose server HTTP integration tests
runs-on: ubuntu-latest
needs: build-binary
steps:
- name: Checkout Code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
ref: ${{ github.event.inputs.branch || github.ref }}

- name: Download Binary
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: goosed-binary
path: target/debug

- name: Make Binary Executable
run: chmod +x target/debug/goosed

- name: Install Node.js Dependencies
run: source ../../bin/activate-hermit && npm ci
working-directory: ui/desktop

- name: Run Integration Tests
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GOOSED_BINARY: ../../target/debug/goosed
Comment thread
jamadeo marked this conversation as resolved.
GOOSE_PROVIDER: anthropic
GOOSE_MODEL: claude-sonnet-4-5-20250929
Comment thread
jamadeo marked this conversation as resolved.
SHELL: /bin/bash
run: |
echo 'export PATH=/some/fake/path:$PATH' >> $HOME/.bash_profile
source ../../bin/activate-hermit && npm run test:integration:debug
working-directory: ui/desktop
3 changes: 3 additions & 0 deletions ui/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@
"test:run": "vitest run",
"test:ui": "vitest --ui",
"test:coverage": "vitest run --coverage",
"test:integration": "vitest run --config vitest.integration.config.ts",
"test:integration:watch": "vitest --config vitest.integration.config.ts",
"test:integration:debug": "DEBUG=1 vitest run --config vitest.integration.config.ts",
"prepare": "husky",
"start-alpha-gui": "ALPHA=true npm run start-gui"
},
Expand Down
5 changes: 0 additions & 5 deletions ui/desktop/src/App.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@ Object.defineProperty(window, 'history', {
writable: true,
});

// Mock dependencies
vi.mock('./utils/providerUtils', () => ({
initializeSystem: vi.fn().mockResolvedValue(undefined),
}));

vi.mock('./utils/costDatabase', () => ({
initializeCostDatabase: vi.fn().mockResolvedValue(undefined),
}));
Expand Down
2 changes: 1 addition & 1 deletion ui/desktop/src/components/BaseChat.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import RecipeActivities from './recipes/RecipeActivities';
import { useToolCount } from './alerts/useToolCount';
import { getThinkingMessage, getTextAndImageContent } from '../types/message';
import ParameterInputModal from './ParameterInputModal';
import { substituteParameters } from '../utils/providerUtils';
import { substituteParameters } from '../utils/parameterSubstitution';
import { useModelAndProvider } from './ModelAndProviderContext';
import CreateRecipeFromSessionModal from './recipes/CreateRecipeFromSessionModal';
import { toastSuccess } from '../toasts';
Expand Down
12 changes: 0 additions & 12 deletions ui/desktop/src/components/OllamaSetup.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,10 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
import { render, screen, waitFor, fireEvent } from '@testing-library/react';
import { OllamaSetup } from './OllamaSetup';
import * as ollamaDetection from '../utils/ollamaDetection';
import * as providerUtils from '../utils/providerUtils';
import { toastService } from '../toasts';
Comment thread
jamadeo marked this conversation as resolved.

// Mock dependencies
Comment thread
jamadeo marked this conversation as resolved.
vi.mock('../utils/ollamaDetection');
vi.mock('../utils/providerUtils');
vi.mock('../toasts');

// Mock useConfig hook
Expand Down Expand Up @@ -162,8 +160,6 @@ describe('OllamaSetup', () => {
});

it('should handle successful connection', async () => {
vi.mocked(providerUtils.initializeSystem).mockResolvedValue(undefined);

render(<OllamaSetup onSuccess={mockOnSuccess} onCancel={mockOnCancel} />);

await waitFor(() => {
Expand All @@ -174,20 +170,12 @@ describe('OllamaSetup', () => {
expect(mockUpsert).toHaveBeenCalledWith('GOOSE_PROVIDER', 'ollama', false);
expect(mockUpsert).toHaveBeenCalledWith('GOOSE_MODEL', 'gpt-oss:20b', false);
expect(mockUpsert).toHaveBeenCalledWith('OLLAMA_HOST', 'localhost', false);
expect(providerUtils.initializeSystem).toHaveBeenCalledWith(
'ollama',
'gpt-oss:20b',
expect.any(Object)
);
expect(toastService.success).toHaveBeenCalled();
expect(mockOnSuccess).toHaveBeenCalled();
});
});

it('should handle connection failure', async () => {
const testError = new Error('Initialization failed');
vi.mocked(providerUtils.initializeSystem).mockRejectedValue(testError);

render(<OllamaSetup onSuccess={mockOnSuccess} onCancel={mockOnCancel} />);

await waitFor(() => {
Expand Down
2 changes: 1 addition & 1 deletion ui/desktop/src/components/recipes/RecipeActivities.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Card } from '../ui/card';
import GooseLogo from '../GooseLogo';
import MarkdownContent from '../MarkdownContent';
import { substituteParameters } from '../../utils/providerUtils';
import { substituteParameters } from '../../utils/parameterSubstitution';

interface RecipeActivitiesProps {
append: (text: string) => void;
Expand Down
Loading
Loading