Skip to content

feat(devops): Soroban CI, Playwright E2E Learner Journey, Multi-stage Docker Stack & Quality Gates - #1211

Merged
ayomideadeniran merged 2 commits into
StellarDevHub:mainfrom
maccoder374-sudo:feat/devops-ci-e2e-docker-quality-gates-1196-1199
Aug 28, 2026
Merged

feat(devops): Soroban CI, Playwright E2E Learner Journey, Multi-stage Docker Stack & Quality Gates#1211
ayomideadeniran merged 2 commits into
StellarDevHub:mainfrom
maccoder374-sudo:feat/devops-ci-e2e-docker-quality-gates-1196-1199

Conversation

@maccoder374-sudo

Copy link
Copy Markdown
Contributor

🚀 Overview & Technical Scope

This Pull Request addresses and resolves issues #1196, #1197, #1198, and #1199 by introducing a comprehensive DevOps, E2E testing, containerization, and static security quality gate infrastructure across the platform.


🛠️ Key Implementation Details

1. Soroban Smart Contract Testing CI Workflow (Closes #1196)

  • Created .github/workflows/soroban-contracts.yml specifically for Soroban smart contract verification and build orchestration.
  • Configured Rust toolchain setup with wasm32-unknown-unknown compilation target, clippy, and rustfmt.
  • Added Cargo caching (Swatinem/rust-cache@v2) for fast CI execution (< 3m build targets).
  • Integrated cargo fmt --check, cargo clippy, workspace check, unit/integration test suite, property/fuzz tests, and compiled release .wasm artifact uploads.

2. Playwright E2E Learner Journey Suite (Closes #1197)

  • Extended frontend/playwright.config.ts to test across Chromium, Firefox, and WebKit (Desktop Safari) rendering engines, alongside mobile viewports.
  • Created frontend/e2e/tests/learner-journey.spec.ts covering complete student onboarding & course completion flows:
    • Student registration & onboarding (/auth/register)
    • Course enrollment (/enroll)
    • Monaco smart contract editor interactions & RPC execution (/playground)
    • Quiz completion & score evaluation (/quiz)
    • Certificate generation & DID verification (/certificates)
  • Configured deterministic mocks for Web3 wallet providers (Freighter, MetaMask, Albedo) and Stellar Horizon/Soroban RPC endpoints in web3.fixture.ts.
  • Added .github/workflows/playwright.yml to run Playwright E2E tests in CI and upload HTML reports, video traces, and screenshots on failure.

3. Production Multi-Stage Docker Compose Stack with Redis Sentinel (Closes #1198)

  • Created frontend/Dockerfile featuring a 3-stage minimal image build (deps, builder, runner) executing under a dedicated non-root user (nextjs, UID 1001) with HTTP health check.
  • Updated backend/Dockerfile ensuring non-root security compliance (nodejs, UID 1001) and layer optimization.
  • Updated docker-compose.yml and docker-compose.prod.yml:
    • Added frontend container service connected to the container network.
    • Integrated 3-node Redis Sentinel configuration (redis-sentinel-1, redis-sentinel-2, redis-sentinel-3) for automatic primary failover monitoring.
    • Set container restart policies (restart: always), health check dependencies, and ensured single-command stack bootstrap (docker compose up -d).

4. SonarQube & CodeQL Static Analysis Quality Gates (Closes #1199)

  • Created .github/workflows/codeql.yml scanning TypeScript, JavaScript, and Rust codebases for security vulnerabilities.
  • Created sonar-project.properties specifying target source directories (frontend/src, backend/src, contracts) and strict Quality Gate rules (0 security hotspots, < 3% duplicated code).
  • Created .github/workflows/sonarqube.yml for automated SonarCloud / SonarQube pull request security and code smell scanning.

✅ Verification & Quality Assurance

  • Verified cargo test --workspace passes cleanly with 0 failures across all contract crates.
  • Validated syntax of all GitHub Actions YAML workflow files (soroban-contracts.yml, playwright.yml, codeql.yml, sonarqube.yml).
  • Validated YAML structure and healthcheck dependencies of docker-compose.yml and docker-compose.prod.yml.
  • Tested Playwright E2E configuration and Web3 mock fixtures.

KnightsDev added 2 commits August 26, 2026 14:30
…ub#1195, StellarDevHub#1200, StellarDevHub#1205

- StellarDevHub#1194: Implement zxcvbn password strength meter and HaveIBeenPwned k-anonymity breach checking
- StellarDevHub#1195: Move root scripts and payloads into scripts/ directory and update README documentation
- StellarDevHub#1200: Configure commitlint, husky hook, PR title linting workflow, and CONTRIBUTING.md
- StellarDevHub#1205: Configure Release Drafter, release workflow, and WASM contract packaging

Fixes StellarDevHub#1194
Fixes StellarDevHub#1195
Fixes StellarDevHub#1200
Fixes StellarDevHub#1205
@vercel

vercel Bot commented Aug 26, 2026

Copy link
Copy Markdown

Someone is attempting to deploy a commit to the Ayomide Adeniran's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Aug 26, 2026

Copy link
Copy Markdown

@maccoder374-sudo Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

// Fallback for Node test environments
try {
const nodeCrypto = await import('crypto');
return nodeCrypto.createHash('sha1').update(message).digest('hex').toUpperCase();
@ayomideadeniran

Copy link
Copy Markdown
Contributor

@maccoder374-sudo This PR is under review and I will get back to you if I find any wrong implementation.

@ayomideadeniran
ayomideadeniran merged commit 809623e into StellarDevHub:main Aug 28, 2026
6 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants