Skip to content

Conversation

@Robdel12
Copy link
Contributor

@Robdel12 Robdel12 commented Jan 4, 2026

Summary

Adds complete release infrastructure for the new Ember SDK to match other client SDKs.

  • Add release-ember-client.yml workflow with prerelease support (publishes to @beta tag)
  • Add CI test job on blacksmith-4vcpu-ubuntu-2404 with Playwright browser caching
  • Add full E2E visual tests running through vizzly run with VIZZLY_EMBER_CLIENT_TOKEN
  • Add CHANGELOG.md for initial v0.0.1-beta.0 release
  • Add LICENSE symlink to root license
  • Update version to 0.0.1-beta.0
  • Fix lint errors in integration tests (unused params)

CI Test Coverage

Step Command
Unit tests npm test
Integration tests npm run test:integration
E2E visual tests vizzly run "npx testem ci"

Test plan

  • CI passes with all test steps
  • E2E visual tests upload to Vizzly (token is set)
  • Release workflow can be triggered manually

@claude
Copy link

claude bot commented Jan 4, 2026

Code Review

Great work on adding complete release infrastructure for the Ember SDK! The implementation is well-structured and consistent with other client SDKs. Here's my detailed review:


βœ… Strengths

1. Excellent Consistency

The release workflow closely matches existing client patterns (vitest, storybook, etc.), which makes it maintainable and reduces cognitive load for the team.

2. Comprehensive CI Coverage

The CI test job (test-ember-client) includes:

  • Multi-node version testing (22, 24)
  • Full test suite (unit, integration, E2E visual tests)
  • Proper dependency caching for Playwright browsers
  • All three test types with appropriate env vars

3. Prerelease Support

The prerelease input parameter with beta tag publishing is a smart addition that other workflows lack. This gives you flexibility for the initial release.

4. Proper Integration

The ci-check job correctly includes the new Ember client in the dependency graph and conditional checks.


πŸ› Issues & Concerns

1. Missing Integration Test Step in Release Workflow

Severity: Medium

The release workflow runs unit tests and linter but doesn't run integration tests before publishing. This is inconsistent with the CI workflow which runs npm run test:integration.

Location: .github/workflows/release-ember-client.yml:112-118

Impact: You could publish a release that passes unit tests but fails integration tests.

Recommendation: Add this step after line 114:

- name: Run integration tests
  working-directory: ./clients/ember
  run: npm run test:integration

2. No E2E Visual Test Step in Release Workflow

Severity: Low-Medium

The release workflow doesn't run the E2E visual tests that are part of CI (vizzly run "npx testem ci"). While this might be intentional (to avoid requiring the test-app build), it creates a gap between what's tested in CI vs. what's tested pre-release.

Location: .github/workflows/release-ember-client.yml:112-118

Recommendation: Consider whether E2E tests should run before release. If not, document why in comments.

3. Lint Errors Fix Without Context

Severity: Low

The PR fixes lint errors (unused params with _ prefix) but doesn't explain why these existed initially or if they indicate a deeper issue.

Location: clients/ember/tests/integration/e2e.test.js:67,149 and launcher.test.js:29

Question: Were these intentional unused params or oversight? The fix is correct, but context helps.


πŸ” Security & Performance

4. Git Auth Reconfiguration

Severity: Info

Line 150-154 reconfigures git auth by manually setting the HTTP extraheader. This pattern exists in other release workflows too.

Question: Is this necessary? The checkout action already uses a token. If git config is being reset by npm version or other commands, consider investigating why rather than re-authenticating.

Potential Issue: Hardcoded base64 encoding of credentials in logs (though GitHub should mask secrets).

5. Playwright Browser Caching

Severity: Info βœ…

Good use of caching! The cache key properly includes the Playwright version and only installs chromium (not all browsers), which saves time and disk space.

Suggestion: Consider adding a timeout or fallback if npx playwright --version fails to parse. Current implementation could silently create a bad cache key.


πŸ“ Code Quality

6. CHANGELOG.md Format

Severity: Low

The changelog has an "Architecture" section under the first release, which is unusual for a changelog. Typically this would go in README or docs.

Location: clients/ember/CHANGELOG.md:22-27

Recommendation: Keep changelogs focused on what changed rather than how it works. Move architecture explanation to README.

7. Changelog Date

Severity: Info

The changelog is dated 2026-01-04, which matches the current system date. Just flagging in case the release happens on a different day.


πŸ§ͺ Test Coverage

8. Missing Test Plan Verification

Severity: Info

The PR test plan has unchecked boxes:

  • CI passes with all test steps
  • E2E visual tests upload to Vizzly (token is set)
  • Release workflow can be triggered manually

Reminder: Verify these before merging, especially the token configuration.


πŸ’‘ Suggestions

9. Version Bump Logic Inconsistency

Severity: Low

When creating a prerelease, the workflow uses npm version with a 'pre' prefix. This means:

  • Input: patch β†’ Output: prepatch (e.g., 0.0.1-beta.0 β†’ 0.0.2-beta.0)
  • Input: minor β†’ Output: preminor (e.g., 0.0.1-beta.0 β†’ 0.1.0-beta.0)

Question: Is this the intended behavior? For subsequent betas, you might want prerelease instead to increment just the prerelease number (0.0.1-beta.0 β†’ 0.0.1-beta.1).

Reference: https://docs.npmjs.com/cli/v9/commands/npm-version

10. Hardcoded Node Version

The release workflow hardcodes Node 22, while CI tests both 22 and 24. Consider using a matrix or testing with the same version that will run the release.


🎯 Summary

Approve with minor changes recommended.

The infrastructure is solid and well-implemented. The main concern is missing integration tests in the release workflow, which should be addressed before publishing to npm. The other issues are minor and can be addressed post-merge or left as-is with team discussion.

Action Items

  1. Required: Add integration test step to release workflow
  2. Recommended: Decide if E2E tests should run pre-release
  3. Optional: Review git auth reconfiguration necessity
  4. Optional: Move architecture docs from CHANGELOG to README

Great job on comprehensive coverage and matching patterns! πŸš€

@Robdel12 Robdel12 force-pushed the rd/ember-sdk-testing branch from 525701f to 798ba33 Compare January 4, 2026 19:20
- Add release-ember-client.yml workflow with prerelease support
- Add CI test job with Playwright browser caching (blacksmith runner)
- Add full E2E visual tests running through vizzly run (needs VIZZLY_EMBER_CLIENT_TOKEN)
- Only run visual E2E tests on Node 22 to avoid duplicate uploads (fixes Vitest too)
- Add 8-minute timeout to all CI jobs to prevent hangs
- Add CHANGELOG.md for initial beta release
- Add LICENSE symlink
- Update version to 0.0.1-beta.0
- Fix lint errors in integration tests (unused params)
@Robdel12 Robdel12 force-pushed the rd/ember-sdk-testing branch from 798ba33 to 6ec5262 Compare January 4, 2026 19:31
The launcher was hanging after tests completed because HTTP keep-alive
connections prevented Node.js process exit.

- Replace fetch() with node:http using Connection: close header
- Add closeAllConnections() call in stopSnapshotServer()
- Set Connection: close on snapshot server responses

This matches the fix applied to the main CLI in commit 007a301.
Testem's Socket.IO round-trip for 'after-tests-complete' wasn't
completing reliably with our Playwright launcher. Instead of waiting
for SIGTERM (which never came), we now:

1. Detect the test framework (QUnit or Mocha)
2. Hook into its completion callback (QUnit.done or Mocha 'end' event)
3. Emit a console signal when tests finish
4. Listen for that signal in Playwright and trigger cleanup

Also changed page.goto waitUntil from 'networkidle' to 'load' since
Socket.IO keeps the network active.
@Robdel12 Robdel12 merged commit d83d346 into main Jan 4, 2026
32 checks passed
@Robdel12 Robdel12 deleted the rd/ember-sdk-testing branch January 4, 2026 20:43
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.

2 participants