From 12443eca369ce733c15acd5383061951fdf3237b Mon Sep 17 00:00:00 2001 From: sayhiben Date: Tue, 3 Feb 2026 14:53:16 -0800 Subject: [PATCH 1/5] add active storage config --- config/storage.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 config/storage.yml diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 0000000..1f93f73 --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,7 @@ +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> From ab65af12e9dc377951f3b72b082d0e1b6506644f Mon Sep 17 00:00:00 2001 From: sayhiben Date: Tue, 3 Feb 2026 15:01:58 -0800 Subject: [PATCH 2/5] remove performance from pr summary --- .github/workflows/pr-validation.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 5d394c9..e60cff7 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -373,7 +373,7 @@ jobs: const summary = `## 🤖 PR Validation Summary - **Status**: ${{ needs.test.result == 'success' && needs.lint.result == 'success' && needs.security.result == 'success' && needs.performance.result == 'success' && '✅ All checks passed' || '❌ Some checks failed' }} + **Status**: ${{ needs.test.result == 'success' && needs.lint.result == 'success' && needs.security.result == 'success' && '✅ All checks passed' || '❌ Some checks failed' }} ### Test Results - **Unit Tests**: ${{ needs.test.result == 'success' && '✅ Passed' || '❌ Failed' }} @@ -383,7 +383,6 @@ jobs: ### Code Quality - **Linting**: ${{ needs.lint.result == 'success' && '✅ Passed' || '❌ Failed' }} - **Security**: ${{ needs.security.result == 'success' && '✅ Passed' || '❌ Failed' }} - - **Performance**: ${{ needs.performance.result == 'success' && '✅ Passed' || '❌ Failed' }} [View detailed results](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) `; From 622bb9e15f68598ea5aac6a4f75bf226abdf0b2d Mon Sep 17 00:00:00 2001 From: sayhiben Date: Tue, 3 Feb 2026 15:06:32 -0800 Subject: [PATCH 3/5] fix timestamp title expectations --- spec/requests/admin/timestamps_spec.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/requests/admin/timestamps_spec.rb b/spec/requests/admin/timestamps_spec.rb index bca1656..453912b 100644 --- a/spec/requests/admin/timestamps_spec.rb +++ b/spec/requests/admin/timestamps_spec.rb @@ -1,4 +1,5 @@ require "rails_helper" +require "cgi" RSpec.describe "Admin::Timestamps", type: :request do let(:admin_user) { create(:user, :admin) } @@ -30,7 +31,7 @@ def login_admin it "displays timestamps" do get admin_timestamps_path timestamps.each do |timestamp| - expect(response.body).to include(timestamp.title) + expect(response.body).to include(CGI.escapeHTML(timestamp.title)) end end @@ -63,7 +64,7 @@ def login_admin it "displays timestamp details" do get admin_timestamp_path(timestamp) - expect(response.body).to include(timestamp.title) + expect(response.body).to include(CGI.escapeHTML(timestamp.title)) end it "displays linked streams" do @@ -155,7 +156,7 @@ def login_admin it "displays form with timestamp data" do get edit_admin_timestamp_path(timestamp) - expect(response.body).to include(timestamp.title) + expect(response.body).to include(CGI.escapeHTML(timestamp.title)) end end From 1ac40fc96e1d61cfb74e90bb0361521699d157b0 Mon Sep 17 00:00:00 2001 From: sayhiben Date: Tue, 3 Feb 2026 15:08:31 -0800 Subject: [PATCH 4/5] fix pr summary test statuses --- .github/workflows/pr-validation.yml | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index e60cff7..e8e497b 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -371,18 +371,32 @@ jobs: comment.body.includes('PR Validation Summary') ); + const fs = require('fs'); + + const unitPassed = fs.existsSync('artifacts/test-results-unit/rspec-unit.xml'); + const integrationPassed = fs.existsSync('artifacts/test-results-integration/rspec-integration.xml'); + const systemPassed = fs.existsSync('artifacts/test-results-system/rspec-system.xml'); + + const lintPassed = fs.existsSync('artifacts/linting-reports/rubocop-report.json') && + fs.existsSync('artifacts/linting-reports/eslint-report.json'); + const securityPassed = fs.existsSync('artifacts/security-reports/brakeman-report.json') && + fs.existsSync('artifacts/security-reports/bundler-audit-report.json'); + + const allPassed = unitPassed && integrationPassed && systemPassed && lintPassed && securityPassed; + const statusText = allPassed ? '✅ All checks passed' : '❌ Some checks failed'; + const summary = `## 🤖 PR Validation Summary - **Status**: ${{ needs.test.result == 'success' && needs.lint.result == 'success' && needs.security.result == 'success' && '✅ All checks passed' || '❌ Some checks failed' }} + **Status**: ${statusText} ### Test Results - - **Unit Tests**: ${{ needs.test.result == 'success' && '✅ Passed' || '❌ Failed' }} - - **Integration Tests**: ${{ needs.test.result == 'success' && '✅ Passed' || '❌ Failed' }} - - **System Tests**: ${{ needs.test.result == 'success' && '✅ Passed' || '❌ Failed' }} + - **Unit Tests**: ${unitPassed ? '✅ Passed' : '❌ Failed'} + - **Integration Tests**: ${integrationPassed ? '✅ Passed' : '❌ Failed'} + - **System Tests**: ${systemPassed ? '✅ Passed' : '❌ Failed'} ### Code Quality - - **Linting**: ${{ needs.lint.result == 'success' && '✅ Passed' || '❌ Failed' }} - - **Security**: ${{ needs.security.result == 'success' && '✅ Passed' || '❌ Failed' }} + - **Linting**: ${lintPassed ? '✅ Passed' : '❌ Failed'} + - **Security**: ${securityPassed ? '✅ Passed' : '❌ Failed'} [View detailed results](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) `; From dbc4629d3ac03d92104d3c2434ef1c461e730847 Mon Sep 17 00:00:00 2001 From: sayhiben Date: Tue, 3 Feb 2026 15:19:58 -0800 Subject: [PATCH 5/5] remove system test references --- .github/workflows/pr-validation.yml | 24 ++++-------------------- ADMIN_INTERFACE.md | 24 +----------------------- GETTING_STARTED.md | 1 - 3 files changed, 5 insertions(+), 44 deletions(-) diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index e8e497b..fc2e440 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - test-type: [unit, integration, system] + test-type: [unit, integration] services: postgres: @@ -141,20 +141,7 @@ jobs: fi bundle exec rspec $INTEGRATION_DIRS --format progress --format RspecJunitFormatter --out tmp/rspec-integration.xml ;; - system) - SYSTEM_DIRS="" - if [ -d "spec/features" ]; then - SYSTEM_DIRS="$SYSTEM_DIRS spec/features" - fi - if [ -d "spec/system" ]; then - SYSTEM_DIRS="$SYSTEM_DIRS spec/system" - fi - if [ -z "$SYSTEM_DIRS" ]; then - echo "No system specs found. Skipping." - exit 0 - fi - bundle exec rspec $SYSTEM_DIRS --format progress --format RspecJunitFormatter --out tmp/rspec-system.xml - ;; + # system tests removed for now esac - name: Upload test results @@ -322,7 +309,7 @@ jobs: echo "|-----------|--------|" >> $GITHUB_STEP_SUMMARY # Check test results - for test_type in unit integration system; do + for test_type in unit integration; do if [ -f "artifacts/test-results-${test_type}/rspec-${test_type}.xml" ]; then echo "| $test_type | ✅ Passed |" >> $GITHUB_STEP_SUMMARY else @@ -375,14 +362,12 @@ jobs: const unitPassed = fs.existsSync('artifacts/test-results-unit/rspec-unit.xml'); const integrationPassed = fs.existsSync('artifacts/test-results-integration/rspec-integration.xml'); - const systemPassed = fs.existsSync('artifacts/test-results-system/rspec-system.xml'); - const lintPassed = fs.existsSync('artifacts/linting-reports/rubocop-report.json') && fs.existsSync('artifacts/linting-reports/eslint-report.json'); const securityPassed = fs.existsSync('artifacts/security-reports/brakeman-report.json') && fs.existsSync('artifacts/security-reports/bundler-audit-report.json'); - const allPassed = unitPassed && integrationPassed && systemPassed && lintPassed && securityPassed; + const allPassed = unitPassed && integrationPassed && lintPassed && securityPassed; const statusText = allPassed ? '✅ All checks passed' : '❌ Some checks failed'; const summary = `## 🤖 PR Validation Summary @@ -392,7 +377,6 @@ jobs: ### Test Results - **Unit Tests**: ${unitPassed ? '✅ Passed' : '❌ Failed'} - **Integration Tests**: ${integrationPassed ? '✅ Passed' : '❌ Failed'} - - **System Tests**: ${systemPassed ? '✅ Passed' : '❌ Failed'} ### Code Quality - **Linting**: ${lintPassed ? '✅ Passed' : '❌ Failed'} diff --git a/ADMIN_INTERFACE.md b/ADMIN_INTERFACE.md index 6ded0f7..08cfea0 100644 --- a/ADMIN_INTERFACE.md +++ b/ADMIN_INTERFACE.md @@ -329,28 +329,6 @@ RSpec.describe Admin::StreamsController do end ``` -2. **System Tests** -```ruby -RSpec.describe "Admin Streams Management", type: :system do - let(:admin) { create(:user, :admin) } - - before do - login_as(admin) - visit admin_streams_path - end - - it "creates a new stream" do - click_link "New Stream" - fill_in "Name", with: "Test Stream" - fill_in "URL", with: "https://example.com" - click_button "Create Stream" - - expect(page).to have_content("Stream was successfully created") - expect(page).to have_content("Test Stream") - end -end -``` - ## Troubleshooting ### Common Issues @@ -425,4 +403,4 @@ tail -f log/development.log - Implement caching for frequently accessed data - Add background jobs for heavy operations - Optimize asset delivery with CDN -- Implement infinite scroll for large lists \ No newline at end of file +- Implement infinite scroll for large lists diff --git a/GETTING_STARTED.md b/GETTING_STARTED.md index e07edcb..3bc7b96 100644 --- a/GETTING_STARTED.md +++ b/GETTING_STARTED.md @@ -102,7 +102,6 @@ make test # Specific test types make test-models # Model tests only make test-requests # API/request tests only -make test-features # Feature/system tests only make test-parallel # Faster parallel execution ```