Fix GitHub workflow: .env.llm-tests lost on checkout (#1041)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com> Co-authored-by: Thomas Nordquist <thomasnordquist@users.noreply.github.com>
This commit is contained in:
87
LLM_TESTS_DEBUG.md
Normal file
87
LLM_TESTS_DEBUG.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# LLM Tests Debugging Summary
|
||||
|
||||
## GitHub Workflow Issue Fixed ✅
|
||||
|
||||
### Problem Identified
|
||||
The `.github/workflows/copilot-setup-steps.yml` had a critical step ordering issue:
|
||||
|
||||
**Before (BROKEN):**
|
||||
1. Create `.env.llm-tests` file
|
||||
2. Checkout code ← **This overwrites the directory, losing the .env file!**
|
||||
3. Run tests
|
||||
|
||||
**After (FIXED):**
|
||||
1. Checkout code
|
||||
2. Create `.env.llm-tests` file ← **Now persists correctly**
|
||||
3. Run tests
|
||||
|
||||
### Changes Made
|
||||
- Moved "Persist Secrets to Agent Environment" step AFTER "Checkout code"
|
||||
- Added `export` prefix to environment variables for proper shell sourcing
|
||||
- Added `RUN_LLM_TESTS=true` to enable tests automatically
|
||||
- Added `chmod 600` for security
|
||||
- Added verification logging to confirm file creation
|
||||
|
||||
## Environment Setup Verification
|
||||
|
||||
### API Key Sourcing ✅
|
||||
The `.env.llm-tests` sourcing mechanism works correctly:
|
||||
|
||||
```bash
|
||||
# Create .env file
|
||||
echo 'export OPENAI_API_KEY=sk-your-key' > .env.llm-tests
|
||||
echo 'export RUN_LLM_TESTS=true' >> .env.llm-tests
|
||||
|
||||
# Source and verify
|
||||
source .env.llm-tests
|
||||
echo $OPENAI_API_KEY # Shows the key
|
||||
```
|
||||
|
||||
### Test Detection ✅
|
||||
When the environment is properly sourced, tests correctly:
|
||||
- Detect the API key presence
|
||||
- Enable live test execution (not skipped)
|
||||
- Show provider detection: "Running LLM integration tests with provider: openai"
|
||||
|
||||
### Current Limitation ⚠️
|
||||
Tests fail in the jsdom environment with network errors:
|
||||
```
|
||||
Error: Cross origin null forbidden
|
||||
Error: LLM API call failed: Network Error
|
||||
```
|
||||
|
||||
This is expected because:
|
||||
1. Tests run in a jsdom environment (not a real browser)
|
||||
2. axios HTTP requests fail due to CORS restrictions in jsdom
|
||||
3. Live API tests need a proper Node.js environment or network mocking
|
||||
|
||||
## Recommendations
|
||||
|
||||
### For Local Development
|
||||
Run tests with a real API key in a Node environment:
|
||||
```bash
|
||||
source .env.llm-tests
|
||||
cd app && yarn test
|
||||
```
|
||||
|
||||
### For CI/CD
|
||||
The workflow now correctly:
|
||||
1. Checks out the repository first
|
||||
2. Creates `.env.llm-tests` in the workspace
|
||||
3. Makes the API key available to subsequent steps
|
||||
|
||||
Consider:
|
||||
1. Running tests in a Node environment (not jsdom)
|
||||
2. Using nock or msw to mock HTTP requests in tests
|
||||
3. Running live tests only in scheduled jobs with proper network access
|
||||
|
||||
## Verified Working
|
||||
- ✅ `.env.llm-tests` creation via workflow (step order fixed)
|
||||
- ✅ `.env.llm-tests` creation via `setup-llm-env.sh`
|
||||
- ✅ Environment variable sourcing
|
||||
- ✅ Test detection of API keys
|
||||
- ✅ Provider auto-detection (OpenAI/Gemini)
|
||||
- ✅ Proper skip behavior when no API key
|
||||
|
||||
## Status
|
||||
The infrastructure is now working correctly. The workflow step order has been fixed to ensure `.env.llm-tests` persists after checkout.
|
||||
Reference in New Issue
Block a user