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
11 changes: 10 additions & 1 deletion cucumber.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
{
"default": {
"require": ["features/step_definitions/**/*.js"],
"paths": ["features/**/*.feature"],
"paths": [
"features/chat.feature",
"features/history.feature",
"features/temporary_chat.feature",
"features/settings.feature",
"features/model_selection.feature",
"features/account_management.feature",
"features/clipboard_copy.feature",
"features/chat_streaming.feature"
],
"format": ["progress"]
}
}
9 changes: 9 additions & 0 deletions features/account_management.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Feature: Account management

Scenario: Access account settings, attempt password change, and attempt account deletion
Given I have an authenticated session
When I navigate to the account page
And I open account from the navigation
And I attempt to change my password
And I attempt to delete my account
Then the account management actions should be recorded
17 changes: 17 additions & 0 deletions features/chat.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Feature: Core chat functionality

Scenario: Navigate to chat, switch models, and receive math and weather answers
Given I have an authenticated session
And local models are available: qwen3:0.5b, gemma3:1b, phi4-mini
And cloud models are available: gpt-4o, gemini-1.5-flash, claude-3-haiku
When I navigate to the chat page
And I open chat from the navigation
And I choose the local model "qwen3:0.5b"
And I ask "What is 144 divided by 12?"
Then I should see a numeric chat answer
And the active model label should be "qwen3:0.5b"
When I choose the cloud model "gemini-1.5-flash"
And I store cloud credentials for "gemini-1.5-flash"
And I ask "What is the weather like in Seattle?"
Then I should see a descriptive weather reply
And the active model label should be "gemini-1.5-flash"
15 changes: 8 additions & 7 deletions features/chat_streaming.feature
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
Feature: Real-time Message Streaming
Scenario: User sees incremental response
Given I am logged in
And I have sent a prompt to the LLM
When the server begins streaming the response chunks
Then I should see the message text appearing character-by-character
And I should see a "typing" or "processing" indicator until the stream ends
Feature: Streaming chat responses

Scenario: Show typing feedback and character-by-character streaming
Given I have an authenticated session
When I navigate to the chat page
And I stream a response for "What is 8 times 8?"
Then I should observe a typing indicator while the model is thinking
And the response should be streamed character by character
11 changes: 11 additions & 0 deletions features/clipboard_copy.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Feature: Clipboard copy actions

Scenario: Copy user and assistant text and code blocks
Given I have an authenticated session
And I have a conversation with text and code messages
When I navigate to the clipboard icon targets
And I copy the "user message text"
And I copy the "LLM message text"
And I copy the "user code block"
And I copy the "LLM code block"
Then the clipboard history should include all copied message variants
9 changes: 9 additions & 0 deletions features/history.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Feature: Chat history

Scenario: Navigate to history and delete a conversation thread
Given I have an authenticated session
And I have a saved conversation thread
When I navigate to the history page
And I open history from the navigation
And I delete the saved conversation thread
Then the conversation thread should be removed from history
19 changes: 19 additions & 0 deletions features/model_selection.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Feature: Model selection

Scenario: Retrieve model lists and validate local and cloud selection behavior
Given I have an authenticated session
And local models are available: qwen3:0.5b, gemma3:1b, phi4-mini
And cloud models are available: gpt-4o, gemini-1.5-flash, claude-3-haiku
When I retrieve the available model list
Then the API model list should include local models: qwen3:0.5b, gemma3:1b, phi4-mini
And the API model list should include cloud models: gpt-4o, gemini-1.5-flash, claude-3-haiku
When I choose the local model "phi4-mini"
And I ask "What is 21 divided by 3?"
Then the local model request should use "phi4-mini"
When I choose the cloud model "claude-3-haiku"
And I store cloud credentials for "claude-3-haiku"
And I ask "What is the weather like in Seattle?"
Then the cloud model request should use "claude-3-haiku"
When I clear cloud credentials for "claude-3-haiku"
And I ask "What is the weather like in Seattle?"
Then I should see a missing credentials error
13 changes: 13 additions & 0 deletions features/settings.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Feature: Settings page

Scenario: Save a default model preference across sessions
Given I have an authenticated session
And local models are available: qwen3:0.5b, gemma3:1b, phi4-mini
And cloud models are available: gpt-4o, gemini-1.5-flash, claude-3-haiku
When I navigate to the settings page
And I open settings from the navigation
And I switch the model category to "cloud"
And I choose the cloud model "gpt-4o"
And I save the selected model preference
And I start a new session
Then the saved model preference should be "gpt-4o"
Loading
Loading