Skip to content

Conversation

@yujonglee
Copy link
Contributor

@yujonglee yujonglee commented Dec 5, 2025

Summary

Adds a new GitHub Actions workflow stt_e2e.yaml for running end-to-end tests against STT (speech-to-text) provider adapters. The workflow is manually triggered via workflow_dispatch with a provider selection input, and runs both batch and live tests using infisical for secrets management.

Supported providers: deepgram, assemblyai, soniox, gladia, fireworks, openai

Review & Testing Checklist for Human

  • Verify infisical is available: The workflow doesn't install infisical - confirm it's pre-installed on the runner or add an installation step
  • Test filter pattern correctness: Verify that adapter::${{ inputs.provider }}::batch and adapter::${{ inputs.provider }}::live correctly match the test module paths (e.g., owhisper_client::adapter::deepgram::live::tests::*)
  • Batch test coverage: Not all providers have batch tests (only gladia and openai have explicit batch tests) - the batch job may fail or be a no-op for other providers
  • Run the workflow manually for at least one provider (e.g., deepgram) to verify it works end-to-end

Notes

@devin-ai-integration
Copy link
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Dec 5, 2025

Deploy Preview for hyprnote-storybook ready!

Name Link
🔨 Latest commit 897104d
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/693285bd165cb0000804af35
😎 Deploy Preview https://deploy-preview-2131--hyprnote-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Dec 5, 2025

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 897104d
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/693285bd43ec3a00083409b3
😎 Deploy Preview https://deploy-preview-2131--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 5, 2025

📝 Walkthrough

Walkthrough

A new GitHub Actions workflow is introduced that enables end-to-end testing of speech-to-text adapters. The workflow accepts a provider selection as input, runs batch and live test jobs on Ubuntu, and executes cargo tests within an Infisical environment for the owhisper-client adapter targeting the specified provider.

Changes

Cohort / File(s) Summary
New E2E Testing Workflow
\.github/workflows/stt_e2e\.yaml
Adds a workflow_dispatch-triggered GitHub Actions workflow with provider selection input (deepgram, assemblyai, soniox, gladia, fireworks, openai), two jobs (batch and live) that checkout code, install Rust, and run cargo tests for the owhisper-client adapter with Infisical environment integration (env=dev, path=/stt).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

  • Verify workflow_dispatch input choices align with available adapters
  • Confirm Infisical configuration (projectId, path=/stt, env=dev) matches deployment setup
  • Check that cargo test commands and test flags (--ignored, --nocapture) are appropriate for E2E testing scope

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: adding a new GitHub Actions workflow for end-to-end testing of STT provider adapters.
Description check ✅ Passed The description is directly related to the changeset, providing clear context about the new STT E2E workflow, supported providers, and testing considerations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch devin/1764918690-stt-e2e-workflow

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
.github/workflows/stt_e2e.yaml (1)

16-31: Consolidate batch and live jobs using a job matrix.

The batch and live jobs are nearly identical, differing only in the test target. This duplication violates the DRY principle and makes maintenance harder. Consolidate them using a GitHub Actions job matrix.

Apply this refactor to use a job matrix:

 jobs:
-  batch:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v4
-      - uses: ./.github/actions/rust_install
-        with:
-          platform: linux
-      - run: infisical run --env=dev --projectId=87dad7b5-72a6-4791-9228-b3b86b169db1 --path="/stt" -- cargo test -p owhisper-client adapter::${{ inputs.provider }}::batch --ignored -- --nocapture
-  live:
+  test:
+    strategy:
+      matrix:
+        test_target: [batch, live]
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v4
       - uses: ./.github/actions/rust_install
         with:
           platform: linux
-      - run: infisical run --env=dev --projectId=87dad7b5-72a6-4791-9228-b3b86b169db1 --path="/stt" -- cargo test -p owhisper-client adapter::${{ inputs.provider }}::live --ignored -- --nocapture
+      - run: infisical run --env=dev --projectId=87dad7b5-72a6-4791-9228-b3b86b169db1 --path="/stt" -- cargo test -p owhisper-client adapter::${{ inputs.provider }}::${{ matrix.test_target }} --ignored -- --nocapture

This eliminates duplication and makes the workflow easier to maintain.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5f898bb and 897104d.

📒 Files selected for processing (1)
  • .github/workflows/stt_e2e.yaml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.9)
.github/workflows/stt_e2e.yaml

20-20: description is required in metadata of "" action at "/home/jailuser/git/.github/actions/rust_install/action.yaml"

(action)


20-20: name is required in action metadata "/home/jailuser/git/.github/actions/rust_install/action.yaml"

(action)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: Redirect rules - hyprnote
  • GitHub Check: Devin
  • GitHub Check: Header rules - hyprnote
  • GitHub Check: Pages changed - hyprnote
  • GitHub Check: fmt
🔇 Additional comments (3)
.github/workflows/stt_e2e.yaml (3)

1-14: Clean workflow trigger and input configuration.

The workflow_dispatch trigger is appropriate for manual testing, and the provider input choices are well-defined.


20-20: Address missing metadata in referenced reusable action.

The rust_install action is missing required metadata fields in its action.yaml. Static analysis (actionlint) reports that both name and description are required.

If the rust_install action is part of this PR, please add the missing metadata to .github/actions/rust_install/action.yaml:

name: Install Rust
description: Installs Rust toolchain and dependencies for the specified platform

If this action is pre-existing and out of scope for this PR, this should be addressed in a separate issue.

Also applies to: 28-28


23-23: Externalize hardcoded Infisical projectId to GitHub secrets.

The projectId 87dad7b5-72a6-4791-9228-b3b86b169db1 is hardcoded in both jobs, which creates a maintainability risk and exposes infrastructure configuration in version control. Additionally, the env and path values are also hardcoded, reducing flexibility.

Move the projectId to a GitHub organization or repository secret (e.g., INFISICAL_PROJECT_ID), and consider making env and path configurable:

-      - run: infisical run --env=dev --projectId=87dad7b5-72a6-4791-9228-b3b86b169db1 --path="/stt" -- cargo test -p owhisper-client adapter::${{ inputs.provider }}::batch --ignored -- --nocapture
+      - run: infisical run --env=dev --projectId=${{ secrets.INFISICAL_PROJECT_ID }} --path="/stt" -- cargo test -p owhisper-client adapter::${{ inputs.provider }}::batch --ignored -- --nocapture

And similarly for the live job (line 31).

Also applies to: 31-31

⛔ Skipped due to learnings
Learnt from: CR
Repo: fastrepl/hyprnote PR: 0
File: apps/web/AGENTS.md:0-0
Timestamp: 2025-11-30T05:42:39.193Z
Learning: Applies to apps/web/.env : Use infisical export command to generate .env files for the web app, with parameters: --env=dev, --secret-overriding=false, --format=dotenv, --output-file pointing to apps/web/.env, projectId=87dad7b5-72a6-4791-9228-b3b86b169db1, and --path=/web

@yujonglee yujonglee merged commit 762d163 into main Dec 5, 2025
12 of 13 checks passed
@yujonglee yujonglee deleted the devin/1764918690-stt-e2e-workflow branch December 5, 2025 07: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.

2 participants