Skip to content

feat: E2E test suite, SQL generator fixes, security automation, versioning - #4

Merged
huyplb merged 3 commits into
mainfrom
main-2.0.1
Jul 1, 2026
Merged

feat: E2E test suite, SQL generator fixes, security automation, versioning#4
huyplb merged 3 commits into
mainfrom
main-2.0.1

Conversation

@huyplb

@huyplb huyplb commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • E2E test infrastructure — Full Selenium pipeline (connect → compare → migrate → history) for all 10 dialects, with page objects, console error capture, screenshot helper, and a run-all sequential runner
  • SQL generator bug fixes — Oracle DEFAULT/NOT NULL order, ADDED procedural objects generated after ALTER TABLE (view referencing new column), drop ordering (sequences after tables), Postgres CREATE TYPE dialect hook
  • Security automation — GitHub Actions for dependency scanning (npm audit + cargo audit), secret scanning (Gitleaks), CodeQL, release gate; Dependabot config; ESLint security rules; SECURITY.md
  • Security fix — Replace exec(\pnpm add ${pkg}`)withspawn('pnpm', ['add', pkg, ...])` to eliminate command injection in the driver-install endpoint
  • Versioning — All packages reset to 0.0.1; version-bump.yml auto-increments build number on every merge to main

Security automation details

Workflow Trigger Blocks merge?
dependency-security PR + push to main Yes (Critical npm vuln, any Rust advisory, ESLint error)
secret-scan PR + push to main Yes (Gitleaks finding)
codeql Push to main No (findings in Security tab)
release-gate Tag v* push GitHub Release only created when all gates pass

Test plan

  • npx vitest run — 92/92 pass
  • cd apps/web && npx tsc --noEmit — clean
  • npx eslint . — 0 errors (8 informational warnings on legitimate fs calls)
  • Start dev server + run npm run test:e2e with configured DB credentials
  • Push a v0.0.2 tag and confirm release-gate.yml creates a draft release

🤖 Generated with Claude Code

huyplb and others added 3 commits June 30, 2026 18:07
…oning

E2E test infrastructure (apps/e2e/):
- Selenium WebDriver page objects: AppPage, ConnectionModal, MigrationPage
- Full pipeline flow: connect → compare → migrate → history for all 10 dialects
- data-testid attributes added to all UI components (ConnectionModal, SchemaTree,
  ObjectDetailPanel, MigrationProgressPanel, DeployConfirmDialog, TopToolbar, MigrationHistory)
- Console error monitoring, screenshot capture, db-config helpers
- Per-dialect test scripts + run-all.mjs sequential runner with log capture

SQL generator fixes:
- Fix DEFAULT/NOT NULL column order (Oracle requires DEFAULT first)
- Fix ADDED procedural objects (VIEW/FUNCTION) generated after MODIFIED ALTER TABLE
  steps so views can reference newly-added columns
- Fix drop ordering: TABLE drops before SEQUENCE/TYPE drops
- Add createTypeStatement dialect hook; implement Postgres ENUM/composite/domain
- LoadSchemas waits for connection status banner (reliable signal vs pre-existing DOM)

Security automation:
- GitHub Actions: dependency-security (npm audit + cargo audit + ESLint), secret-scan
  (Gitleaks diff-mode on PR, full-history on push), codeql (post-merge + weekly),
  release-gate (all checks gate GitHub Release draft on tag push)
- Dependabot: weekly npm + cargo updates
- ESLint security plugin: detect-child-process, detect-eval, detect-unsafe-regex
- Fix: replace exec() template-string with spawn() array args in /driver/install
  endpoint — eliminates command injection via shell interpretation of packageName
- SECURITY.md + docs/security/security-process.md

Versioning:
- All packages reset to 0.0.1 (was 1.0.0); format: 0.0.BUILD
- GitHub Actions version-bump.yml auto-increments BUILD on every merge to main

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove `cache: npm` from all setup-node steps — package-lock.json is
  gitignored so the cache plugin fails with "lock file not found"
- Add `continue-on-error: true` to SARIF upload steps in secret-scan.yml
  and codeql.yml — private repos need GitHub Advanced Security for the
  Code Scanning API; the scan itself still blocks on actual findings

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@huyplb
huyplb merged commit c68a3df into main Jul 1, 2026
4 checks passed
@huyplb
huyplb deleted the main-2.0.1 branch July 4, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant