-
Notifications
You must be signed in to change notification settings - Fork 0
feat: MVP reorganization - simplified navigation and AI Provider Settings #56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
stegbk
wants to merge
191
commits into
main
Choose a base branch
from
feature/code-review-fixes-20251010
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 184 commits
Commits
Show all changes
191 commits
Select commit
Hold shift + click to select a range
d9d832d
Add make api utilities for generating code from openapi spec file as …
enriqueb-nortal 5848183
Move the python files around
stegbk 2add880
Add families to spec
stegbk b03baed
Fixed Python code moving
enriqueb-nortal a6ecb50
Leaving backend/api/generated/app/ empty
enriqueb-nortal 9c27e6e
Merge pull request #2 from nortal/PR003946-19
enriqueb-nortal 720b943
Merge branch 'PR003946-19' into kcs/update_spec_with_families
enriqueb-nortal ef4fdc2
Move family spec to correct location
stegbk 7f5215c
Merge pull request #3 from nortal/kcs/update_spec_with_families
enriqueb-nortal d58fe81
Need to update user module and openapi.spec for this (#5)
stegbk fbd3410
Enriqueb/family endpoint impl (#6)
enriqueb-nortal ed5bf66
Family endpoints - PynamoDB implementation
enriqueb-nortal 7dacc4f
Cloudformation templates PR003946-20 (#4)
iris-nortal 9598c92
Family endpoints - PynamoDB implementation (#7)
enriqueb-nortal 64de327
Merge remote-tracking branch 'origin/dev' into enriqueb/family/pynamo…
enriqueb-nortal 73c579f
Adds userId as a GSI on userDetails
enriqueb-nortal 038083e
doc(cloudformation/backend): update deployment instructions
iris-nortal 3fab025
Implements endpoints from admin controller
enriqueb-nortal 962bfab
Add React frontend with role-based navigation and animal configuration
stegbk 5f0d025
Fix authentication and add demo guide with security improvements
stegbk bab4e05
Merge pull request #8 from nortal/enriqueb/userdetails/adds-userId-gsi
iris-nortal f400eef
Merge pull request #9 from nortal/enriqueb/admin/endpoints-implementa…
stegbk 42dd2d4
feat: Add AWS Cognito authentication system for CMZ Chatbot Platform
stegbk d7a0ede
feat: Complete Cognito authentication controller integration
stegbk 7232b3b
Merge pull request #12 from nortal/kcs/cognito-authentication
stegbk 154e2a7
Add React frontend with role-based navigation and animal configuration
stegbk 9ba179c
Merge pull request #10 from nortal/kcs/frontend-ui-system
stegbk e4efabd
feat: Complete Animals endpoints with hexagonal architecture and full…
stegbk 2eb74c0
Fix security scan configuration for GitHub Actions
stegbk 6d01c68
Fix TruffleHog secrets scanning configuration
stegbk 3a2b633
Fix shell injection vulnerabilities in DAST workflow
stegbk 4fb8b1f
Fix remaining security scan issues
stegbk 6f7f239
Fix security workflow issues
stegbk ff2f0da
Fix remaining shellcheck errors in security workflows
stegbk 089176b
Fix shell injection vulnerability in DAST workflow
stegbk 55d3a9b
Fix multiple shell injection vulnerabilities in GitHub Actions workflows
stegbk 64cbf7e
Disable GitGuardian secrets scan due to API key configuration issue
stegbk 0521809
Temporarily disable CodeQL scanning to resolve workflow failures
stegbk 30a3e3c
Merge pull request #11 from nortal/kcs/hexagonal-architecture
stegbk 72e7f86
Implement frontend-backend API integration for CMZ Animal Configuration
stegbk 5f226cf
Fix unused imports in animals_controller.py
stegbk c0b7f68
Improve API service security configuration
stegbk 62731a4
Implement Copilot-style code quality improvements
stegbk 863de02
Add comprehensive session documentation for frontend-backend integration
stegbk 105032a
Fix critical integration issues discovered during comprehensive testing
stegbk 3818824
Merge pull request #13 from nortal/kcs/frontend-api-integration
stegbk 503ef26
Add comprehensive cURL-based integration test framework
stegbk a6853f3
Add project-level cURL test framework documentation
stegbk be488a3
Fix datetime deprecation warnings
stegbk e659b59
Fix DynamoDB GSI configuration to handle nullable familyId
stegbk dac8fe1
Address GitHub Advanced Security code quality issues
stegbk a5c01e4
Fix: Restore uuid import needed by test fixtures
stegbk 172a271
Merge pull request #14 from nortal/kcs/curl-test-framework
stegbk 164967d
Implement API validation foundation: 5 critical tickets
stegbk 1c74098
Implement 5 High-Priority API Validation Tickets
stegbk dba0506
Add implementation files for validation tickets
stegbk e60f06e
Fix unused import security issues flagged by GitHub Advanced Security
stegbk e4d4ed4
Merge pull request #15 from nortal/feature/api-validation-foundation
stegbk 3ac677e
Implement 5 high-priority API validation tickets
stegbk 629ccd9
Fix test configuration and expectations for DynamoDB-free testing
stegbk a13de3c
Address GitHub Copilot feedback: optimize imports and add env vars
stegbk 758ad1d
Add development session history for API validation implementation
stegbk 261755c
Merge pull request #16 from nortal/feature/api-validation-foundation
stegbk 1aaa275
Implement 5 high-priority API validation tickets with comprehensive t…
stegbk 84f1de4
Add comprehensive session history documentation
stegbk 7e39961
Update history with final security review and validation results
stegbk b619a36
Merge pull request #17 from nortal/feature/api-validation-foundation
stegbk 867bbc6
Enhance Jira automation and /nextfive command workflow
stegbk 88cfbaf
Add completed tickets reference to documentation
stegbk dc44b1e
Merge pull request #18 from nortal/feature/api-validation-foundation
stegbk be20e45
Implement PR003946-87 password policy validation and PR003946-67 casc…
stegbk 5b9eec6
Clean up unused import in auth_controller.py
stegbk 03c44c8
Update /nextfive template with correct Copilot reviewer syntax
stegbk 4e2cd0b
Address Copilot review feedback
stegbk 393ee87
Merge pull request #19 from nortal/feature/api-validation-foundation
stegbk a52db6f
Implement 5 missing API endpoints with comprehensive testing and vali…
stegbk 3b1ecd4
Add comprehensive session history for API endpoint implementation
stegbk 60f6f8b
Address Copilot and GitHub Advanced Security review feedback
stegbk 63670ef
Add secure JIRA credential management system
stegbk 0929115
Implement 5 priority API validation improvements for epic PR003946-61
stegbk 0347d3b
Fix CodeQL issues: remove unused imports and invalid ValidationError …
stegbk f13a364
Merge pull request #20 from nortal/feature/api-validation-foundation
stegbk 56874de
Changes to claude.md
stegbk 1100ea9
Merge pull request #21 from nortal/feature/api-validation-foundation
stegbk 1d0906e
feat: implement 5 high-priority API validation enhancements
stegbk 84a71bc
fix: address Copilot review feedback - fix grammar in validation erro…
stegbk 72c902e
Merge pull request #23 from nortal/feature/api-validation-enhancements
stegbk 97c16dc
feat: implement complete frontend-backend animal management integration
stegbk a8d98af
Update UI testing report with additional control validation
stegbk e8b1147
Fix OpenAPI code generation quality issues and model regeneration
stegbk b893488
Add comprehensive session history documentation and enhanced /nextfiv…
stegbk 39f6ca2
Merge pull request #25 from nortal/feature/frontend-backend-integrati…
stegbk f80d475
Enhance /nextfive template with multiple ticket support and advanced …
stegbk 85159ba
Merge pull request #26 from nortal/feature/frontend-backend-integrati…
stegbk ea9092b
Complete API Testing Infrastructure & Validation Improvements
stegbk 3c3534d
Fix GitHub Advanced Security scanner issues
stegbk 6c56277
Fix Jira automation script accuracy issue
stegbk 5724c7b
Address Copilot review comments
stegbk 7efc59d
Complete quality assurance validation
stegbk d9eecae
Fix final unused import flagged by security scanner
stegbk a67511c
Address CodeQL security scanning issues
stegbk a85f69f
Fix CodeQL security scanning issues
stegbk 93ea9f0
Merge pull request #27 from nortal/feature/api-automated-testing-updates
stegbk d537cb1
feat: implement API validation framework with PR003946-70 complete
stegbk a61109e
refactor: add error code constants to validation utilities
stegbk 9573076
fix: complete OpenAPI regeneration and Docker daemon resolution
stegbk 95ab34b
Fix authentication implementation and implement two-step Playwright v…
stegbk e90f4a6
Security improvements for CodeQL compliance
stegbk fe96b57
Address GitHub Advanced Security CodeQL findings
stegbk 9f945c6
Merge pull request #28 from nortal/feature/api-validation-improvement…
stegbk be9a349
Add authentication testing improvements and Jira automation scripts
stegbk 69e64b8
Merge pull request #29 from nortal/feature/authentication-testing-art…
stegbk 3493544
Add comprehensive function-level unit tests for TDD enablement
stegbk c05a0be
Merge remote-tracking branch 'origin/dev' into feature/function-level…
stegbk 7017c3f
Add comprehensive function-level unit tests for TDD enablement
stegbk 50e55d3
Fix CodeQL issues: move imports to top-level, add missing method, rem…
stegbk a84fa6e
Comprehensive CodeQL fixes: resolve all 38 issues
stegbk a9773af
Fix CodeQL and Copilot review issues
stegbk 005ee2c
Merge pull request #30 from nortal/feature/function-level-unit-tests
stegbk 17b0697
Add controller fixes and Playwright tests for animal configuration
stegbk f3bff1b
Merge remote-tracking branch 'origin/dev' into feature/api-validation…
stegbk 243a64d
Fix CodeQL issues: Replace 'do some magic!' placeholders with proper …
stegbk f1f4ed7
Fix CodeQL failures: Replace 'do some magic!' placeholders with prope…
stegbk ef93e8c
Fix CodeQL error and warnings: resolve 1 error + 25+ warnings
stegbk 2ea2a8a
Merge pull request #31 from nortal/feature/api-validation-function-te…
stegbk f7fcb88
WIP: Animal config fixes - personality validation pattern and seriali…
stegbk 28938ca
Fix UI default values and DynamoDB consistency issues
stegbk a919a45
Fix UI defaults and DynamoDB data consistency issues
stegbk b3eaf30
Implement comprehensive security fixes for CodeQL findings
stegbk 0ebe4ee
Address all PR review feedback and resolve open comments
stegbk 891e6c2
Clean up unused variables and imports to resolve CodeQL findings
stegbk a7f0c4c
Merge pull request #32 from nortal/feature/fix-ui-defaults-and-data-c…
stegbk c25bf63
Enhance /nextfive command with intelligent discovery and quality gates
stegbk 7abe281
Merge pull request #33 from nortal/feature/nextfive-enhancements-2025…
stegbk daf81e6
Implement comprehensive retrospective learnings and /nextfive enhance…
stegbk 616c1c8
Implement TDD Foundation: 5 Core API Validation Tickets
stegbk a7cea5a
Address Copilot review feedback: security and code quality fixes
stegbk 5b979a1
Merge pull request #35 from nortal/feature/tdd-foundation-tickets-202…
stegbk 4d1b6e0
Implement tab-aware form validation for Animal Configuration modal
stegbk a4def75
Merge pull request #37 from nortal/feature/tab-aware-form-validation-…
stegbk 4bca7c7
Implement comprehensive TDD framework with Jira integration and multi…
stegbk a435fc4
Merge pull request #38 from nortal/feature/tdd-framework-comprehensiv…
stegbk e9d6eb0
Implement 3/5 high-priority API validation tickets with systematic ap…
stegbk 8182074
Implement comprehensive OpenAPI template-based solution for placehold…
stegbk c02df2a
Security fix: Change file permissions from 0o755 to 0o644
stegbk 685f01a
CodeQL security fix: Replace regex patterns with safe string replacem…
stegbk 3221a3c
Code quality fix: Address all GitHub Advanced Security findings
stegbk c60828e
Security fix: Set restrictive file permissions for generated scripts
stegbk 7ad3efd
Fix: Resolve OpenAPI template integration issues and security findings
stegbk 807b513
docs: Add OpenAPI template integration and security scanner learnings
stegbk f4de030
Merge pull request #39 from nortal/feature/api-validation-next-five-2…
stegbk 38a95bc
feat: Add authentication fixes and animal config investigation
stegbk dbb36b8
feat(PR003946-147): Implement comprehensive frontend-backend regressi…
stegbk a9fab64
docs: Add Animal Configuration Edit validation session documentation
stegbk b10742d
fix: resolve code review comments from Copilot and GitHub Advanced Se…
stegbk ae800c2
fix: resolve hardcoded JWT secret security vulnerability
stegbk edfb712
Merge pull request #40 from nortal/feature/pr003946-147-regression-pr…
stegbk fe146ad
Merge pull request #34 from nortal/feature/retrospective-learnings-20…
stegbk 5ae8f8b
feat: Add comprehensive Claude Code command framework and validation …
stegbk ed2bc81
fix: Allow natural language punctuation in animal personality fields …
stegbk 9283edb
feat: Fix text validation patterns to support natural language (#43)
stegbk 5ad7c25
feat: Implement API validation improvements for PR003946 epic (#44)
stegbk 50f2b16
feat: Implement Chat History Epic (PR003946-156 to PR003946-160) (#45)
stegbk 380a385
feat: Implement Chat History Epic (PR003946-170) - Conversation Manag…
stegbk 21caa1d
fix: Resolve authentication, family creation, and API endpoint issues…
stegbk 8331383
feat: Implement conversation history endpoints and fix animal ID para…
stegbk d247ef9
feat: Implement conversation/chat endpoints with ChatGPT integration …
stegbk e2884ab
fix: Upgrade dependencies to address CVE warnings (#52)
stegbk e51ce34
feat: Add automated fix for recurring post-generation issues (#53)
stegbk 928f568
checkpoint: pre-code-review-fixes state with Guardrails system
stegbk 378a832
fix(dead-code): remove deprecated later.py and later_controller.py
stegbk f323a4d
docs: add code review fix reports and assessment
stegbk fbcd3d3
fix: Resolve CodeQL security and quality issues
stegbk 1fc4b8f
docs: add security note about structured logging
stegbk fb6d7b7
fix(security): Add log injection sanitization for user-provided values
stegbk e5fd524
fix(security): Implement defense-in-depth log injection protection
stegbk afa6709
fix: Bug #7 and FLAKE8 cleanup - resolve import-before-use errors
stegbk d9e51c8
feat: PHASE 0.5 - Implement systemPrompt DynamoDB persistence
stegbk 2683d8b
docs: add critical /convo_turn/stream endpoint discovery to ENDPOINT-…
stegbk 045837d
fix: Animal Details Modal close button now works in both edit and vie…
stegbk 10bd90b
docs: add Playwright MCP tool documentation to test files
stegbk 91f5e49
fix: resolve test collection errors preventing 594 tests from running
stegbk c7be1e1
fix: update unit tests to handle tuple returns from API handlers (20/…
stegbk aff5a59
feat: MVP reorganization - simplified navigation and AI Provider Sett…
stegbk 14b43bb
feat: Add Spec Kit for specification-driven development
stegbk 2fef0b5
fix: Resolve family.py handler forwarding chains
stegbk ea0a799
test: Improve unit test coverage and add security edge cases
stegbk dd77ed2
chore: Session work checkpoint - various improvements
stegbk 1e38726
fix(handlers): Resolve critical handler forwarding chain issues (T001…
stegbk 5515dc3
test(coverage): Add comprehensive test suite (T007-T009)
stegbk 8801f0e
test(coverage): Complete test suite improvements (T010-T012)
stegbk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,191 @@ | ||
| # Jira Stories for Playwright Validation | ||
|
|
||
| ## Story 1: DynamoDB Persistence Validation | ||
|
|
||
| **Summary**: Validate Playwright E2E Tests with DynamoDB Persistence | ||
|
|
||
| **Issue Type**: Task | ||
| **Parent Epic**: PR003946-61 | ||
| **Story Points**: 8 | ||
| **Priority**: High | ||
| **Labels**: backend, testing, dynamodb, playwright | ||
| **Billable**: Billable | ||
|
|
||
| **Description**: | ||
| As a developer, I want comprehensive validation of Playwright end-to-end tests using DynamoDB as the persistence layer to ensure data integrity and proper CRUD operations during browser automation testing. | ||
|
|
||
| ### Background | ||
| Currently our Playwright tests may not be fully validating the DynamoDB persistence layer integration. We need to ensure that all user interactions (login, family management, animal configurations, conversations) properly persist to and retrieve from DynamoDB tables during E2E testing. | ||
|
|
||
| ### Technical Context | ||
| - API Backend: Flask/Connexion with OpenAPI-first development | ||
| - Persistence: AWS DynamoDB with 10+ production tables | ||
| - Test Environment: Playwright browser automation with 6 browser configurations | ||
| - Tables: quest-dev-family, quest-dev-users, quest-dev-animals, quest-dev-conversations | ||
| - Test Users: parent1@test.cmz.org, student1@test.cmz.org, test@cmz.org, user_parent_001@cmz.org | ||
| - Environment: AWS_PROFILE=cmz, AWS_REGION=us-west-2 | ||
|
|
||
| ### Scope/Endpoints | ||
| All Playwright E2E tests that interact with backend API endpoints requiring DynamoDB persistence. | ||
|
|
||
| ### Acceptance Criteria | ||
|
|
||
| **AC1: Login Flow DynamoDB Persistence** | ||
| - **Given** a Playwright test runs login for parent1@test.cmz.org | ||
| - **When** authentication succeeds and user accesses dashboard | ||
| - **Then** verify user record exists in quest-dev-users table with correct JWT token hash | ||
| - **And** verify login timestamp is recorded in DynamoDB within 5 seconds of test execution | ||
| - **Test**: `aws dynamodb get-item --table-name quest-dev-users --key '{"userId":{"S":"parent1@test.cmz.org"}}'` | ||
|
|
||
| **AC2: Family CRUD Operations Persistence** | ||
| - **Given** a Playwright test creates a new family via the family management UI | ||
| - **When** family data is submitted with familyName "Test Family E2E" | ||
| - **Then** verify family record exists in quest-dev-family table with generated familyId | ||
| - **And** verify created.at and modified.at timestamps are ISO format and within test execution time | ||
| - **Test**: `aws dynamodb scan --table-name quest-dev-family --filter-expression "familyName = :name" --expression-attribute-values '{":name":{"S":"Test Family E2E"}}'` | ||
|
|
||
| **AC3: Animal Configuration Persistence** | ||
| - **Given** a Playwright test modifies animal chatbot settings for "Luna the Lion" | ||
| - **When** configuration changes are saved (personality, response style, knowledge base) | ||
| - **Then** verify updated animal record in quest-dev-animals table matches UI changes | ||
| - **And** verify configuration version number incremented by 1 | ||
| - **Test**: `aws dynamodb get-item --table-name quest-dev-animals --key '{"animalId":{"S":"luna-lion"}}'` and compare config fields | ||
|
|
||
| **AC4: Conversation History Persistence** | ||
| - **Given** a Playwright test conducts a chat conversation with 3+ message exchanges | ||
| - **When** each message is sent and received in the chat interface | ||
| - **Then** verify complete conversation thread exists in quest-dev-conversations table | ||
| - **And** verify message timestamps are sequential and within test execution window | ||
| - **Test**: `aws dynamodb query --table-name quest-dev-conversations --key-condition-expression "sessionId = :sid"` | ||
|
|
||
| **AC5: Cross-Browser DynamoDB Consistency** | ||
| - **Given** Playwright tests run across all 6 browser configurations (Chrome, Firefox, Safari, Edge, Mobile Chrome, Mobile Safari) | ||
| - **When** each browser performs identical login → family creation → animal interaction sequence | ||
| - **Then** verify DynamoDB contains 6 distinct user sessions with unique sessionIds | ||
| - **And** verify no data corruption or race conditions between concurrent browser sessions | ||
| - **Test**: Count distinct sessionIds in quest-dev-conversations for test timeframe must equal 6 | ||
|
|
||
| **AC6: Test Data Isolation and Cleanup** | ||
| - **Given** Playwright test suite runs with --workers=2 (concurrent execution) | ||
| - **When** tests complete successfully or fail | ||
| - **Then** verify test data is prefixed with "test-" or "e2e-" for identification | ||
| - **And** verify automated cleanup removes all test records within 60 seconds of test completion | ||
| - **Test**: `aws dynamodb scan --table-name quest-dev-family --filter-expression "begins_with(familyId, :prefix)" --expression-attribute-values '{":prefix":{"S":"test-"}}'` returns 0 items post-cleanup | ||
|
|
||
| **AC7: DynamoDB Error Handling Validation** | ||
| - **Given** DynamoDB table is temporarily unavailable (simulate with invalid credentials) | ||
| - **When** Playwright test attempts family creation | ||
| - **Then** verify UI displays "Data service temporarily unavailable" error message | ||
| - **And** verify test doesn't crash and can recover when service restored | ||
| - **Test**: Mock DynamoDB failure, verify error UI element exists, restore service, verify recovery | ||
|
|
||
| --- | ||
|
|
||
| ## Story 2: Local File Persistence Mode Validation | ||
|
|
||
| **Summary**: Validate Playwright E2E Tests with Local File Persistence Mode | ||
|
|
||
| **Issue Type**: Task | ||
| **Parent Epic**: PR003946-61 | ||
| **Story Points**: 5 | ||
| **Priority**: Normal | ||
| **Labels**: backend, testing, file-persistence, playwright | ||
| **Billable**: Billable | ||
|
|
||
| **Description**: | ||
| As a developer, I want comprehensive validation of Playwright end-to-end tests using local file persistence mode (PERSISTENCE_MODE=file) to ensure data integrity and proper CRUD operations during browser automation testing in offline/development scenarios. | ||
|
|
||
| ### Background | ||
| Our API supports both DynamoDB and local file persistence modes. We need to ensure Playwright E2E tests work correctly when the API is configured for local file persistence (PERSISTENCE_MODE=file), providing a complete testing solution for development environments without AWS dependencies. | ||
|
|
||
| ### Technical Context | ||
| - API Backend: Flask/Connexion with OpenAPI-first development | ||
| - Persistence: Local file system with JSON-based storage | ||
| - Test Environment: Playwright browser automation with 6 browser configurations | ||
| - Storage: Local files in configured directory structure | ||
| - Test Users: Same authentication users but stored in local files | ||
| - Environment: PERSISTENCE_MODE=file, no AWS dependencies required | ||
|
|
||
| ### Scope/Endpoints | ||
| All Playwright E2E tests that interact with backend API endpoints, configured for local file persistence mode. | ||
|
|
||
| ### Acceptance Criteria | ||
|
|
||
| **AC1: File-Based Login Persistence** | ||
| - **Given** API runs with PERSISTENCE_MODE=file and Playwright test performs login | ||
| - **When** parent1@test.cmz.org authenticates successfully | ||
| - **Then** verify user data file exists at `./data/users/parent1@test.cmz.org.json` | ||
| - **And** verify file contains valid JWT token hash and login timestamp | ||
| - **Test**: `cat ./data/users/parent1@test.cmz.org.json | jq '.lastLogin'` returns timestamp within 5 seconds | ||
|
|
||
| **AC2: File-Based Family CRUD Operations** | ||
| - **Given** PERSISTENCE_MODE=file and Playwright test creates family "File Test Family" | ||
| - **When** family creation form is submitted via UI | ||
| - **Then** verify family file exists at `./data/families/{generated-uuid}.json` | ||
| - **And** verify file contains familyName "File Test Family" and ISO timestamps | ||
| - **Test**: `find ./data/families -name "*.json" -exec grep -l "File Test Family" {} \;` returns exactly 1 file | ||
|
|
||
| **AC3: File-Based Animal Configuration** | ||
| - **Given** PERSISTENCE_MODE=file and Playwright test modifies Luna's chatbot settings | ||
| - **When** personality changes from "Friendly" to "Educational" via UI | ||
| - **Then** verify `./data/animals/luna-lion.json` contains `"personality": "Educational"` | ||
| - **And** verify configVersion incremented and modifiedAt updated | ||
| - **Test**: `cat ./data/animals/luna-lion.json | jq '.personality'` equals "Educational" | ||
|
|
||
| **AC4: File-Based Conversation Storage** | ||
| - **Given** PERSISTENCE_MODE=file and Playwright test conducts 5-message conversation | ||
| - **When** each message exchange completes in chat interface | ||
| - **Then** verify conversation file exists at `./data/conversations/{sessionId}.json` | ||
| - **And** verify file contains array of 5 message objects with sequential timestamps | ||
| - **Test**: `cat ./data/conversations/{sessionId}.json | jq '.messages | length'` equals 5 | ||
|
|
||
| **AC5: Cross-Browser File Consistency** | ||
| - **Given** PERSISTENCE_MODE=file and 3 concurrent browser sessions perform identical operations | ||
| - **When** each browser creates family with same name "Concurrent Test Family" | ||
| - **Then** verify 3 separate family files exist with unique UUIDs | ||
| - **And** verify no file corruption or incomplete writes | ||
| - **Test**: `find ./data/families -name "*.json" -exec grep -l "Concurrent Test Family" {} \; | wc -l` equals 3 | ||
|
|
||
| **AC6: File System Error Handling** | ||
| - **Given** PERSISTENCE_MODE=file and data directory is read-only | ||
| - **When** Playwright test attempts to create family | ||
| - **Then** verify UI displays "Unable to save data" error message | ||
| - **And** verify error logged contains "Permission denied" or similar file system error | ||
| - **Test**: Set `chmod 444 ./data/families` before test, verify error UI element exists | ||
|
|
||
| **AC7: File-Based Test Cleanup** | ||
| - **Given** PERSISTENCE_MODE=file and Playwright test suite completes | ||
| - **When** cleanup phase executes | ||
| - **Then** verify all files with "test-" prefix are removed from all data directories | ||
| - **And** verify production data files remain unchanged | ||
| - **Test**: `find ./data -name "*test-*" | wc -l` equals 0 after cleanup | ||
|
|
||
| **AC8: DynamoDB-to-File Mode Compatibility** | ||
| - **Given** API switches from DynamoDB to PERSISTENCE_MODE=file mid-test | ||
| - **When** existing session continues with file-based operations | ||
| - **Then** verify same API responses and UI behavior as DynamoDB mode | ||
| - **And** verify session continuity maintained across persistence mode switch | ||
| - **Test**: Compare API response schemas between modes, verify identical structure | ||
|
|
||
| **AC9: File Performance Under Load** | ||
| - **Given** PERSISTENCE_MODE=file and 6 concurrent Playwright sessions | ||
| - **When** each session performs 10 rapid CRUD operations | ||
| - **Then** verify all 60 operations complete within 30 seconds | ||
| - **And** verify no file locking conflicts or partial writes | ||
| - **Test**: Measure operation completion time, verify all expected files exist and are valid JSON | ||
|
|
||
| --- | ||
|
|
||
| ## Creation Instructions | ||
|
|
||
| These stories can be created in Jira using: | ||
|
|
||
| 1. **Manual Creation**: Copy the content above into new Jira tickets | ||
| 2. **Existing Scripts**: Use `/scripts/update_jira_simple.sh` workflow if it supports creation | ||
| 3. **Direct API**: Use the working Jira API authentication from your established patterns | ||
|
|
||
| Remember to: | ||
| - Set **Billable** field to "Billable" | ||
| - Link to **Parent Epic**: PR003946-61 | ||
| - Add appropriate **Labels**: backend, testing, dynamodb/file-persistence, playwright | ||
| - Set **Story Points**: 8 for DynamoDB story, 5 for file persistence storyB |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| keithstegbauer@macbookair.lan.5900 | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like an editor lock or transient file (Emacs-style .# prefix) inadvertently committed. It provides no project value and should be removed from version control and added to .gitignore.