* fix: add team factory and associate with user factory
The Teams feature added a NOT NULL team_id constraint on users.
The user factory was missing this association, causing 221/230 spec failures.
* fix: make local CI match GitHub Actions 1:1
- Dockerfile.ci: add chromium, chromedriver, pdfium (same as remote CI)
- docker-compose.ci.yml: fix PG18 tmpfs mount path (/var/lib/postgresql)
- .githooks/pre-push: run FULL CI suite (lint + brakeman + rspec)
Local CI results: 230 examples, 2 failures (system spec browser issues,
pre-existing — same tests fail on remote CI too)
* fix: resolve failing RSpec tests (setup + signing form)
- setup_spec.rb:28: move team assignment before @account.valid? check
to prevent cascading validation failure from missing team association
- signing_form_spec.rb:1151: fix race condition by waiting for page
content before asserting job enqueue; correct expected message text
- db/schema.rb: update to reflect teams migrations
* fix: resolve remaining flaky test failures
- dashboard_spec.rb: use deterministic template name to prevent
Faker::Book.title collisions between account templates
- rails_helper.rb: increase Cuprite timeout from 20s to 30s to
prevent PendingConnectionsError on first page load in CI
---------
Co-authored-by: Sebastian Noe <sebastian.schneider@boxine.de>
- Remove redundant Rails/Exit disable comments from spec/rails_helper.rb
- Add Rails/Exit exclusion for spec/ in .rubocop.yml
- Ensures both local (docker compose) and remote (GitHub Actions) agree
Co-authored-by: Sebastian Noe <sebastian.schneider@boxine.de>
- Fix Layout/LineLength in lib/template_folders.rb
- Disable Rails/Exit in spec/rails_helper.rb (standard Rails boilerplate)
- Simplify Dockerfile.ci (remove pdfium/chromium for lint)
- Fix docker-compose.ci.yml (remove volume mounts that conflict with COPY)
- Add pg_data and .claude to .dockerignore
All linters verified passing locally via docker compose.
Co-authored-by: Sebastian Noe <sebastian.schneider@boxine.de>