code-qa.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. name: Code QA Roo Code
  2. on:
  3. workflow_dispatch:
  4. push:
  5. branches: [main]
  6. pull_request:
  7. types: [opened, reopened, ready_for_review, synchronize]
  8. branches: [main]
  9. env:
  10. NODE_VERSION: 20.18.1
  11. jobs:
  12. compile:
  13. runs-on: ubuntu-latest
  14. steps:
  15. - name: Checkout code
  16. uses: actions/checkout@v4
  17. - name: Setup Node.js
  18. uses: actions/setup-node@v4
  19. with:
  20. node-version: ${{ env.NODE_VERSION }}
  21. cache: 'npm'
  22. - name: Install dependencies
  23. run: npm run install:all
  24. - name: Compile
  25. run: npm run compile
  26. - name: Check types
  27. run: npm run check-types
  28. - name: Lint
  29. run: npm run lint
  30. check-translations:
  31. runs-on: ubuntu-latest
  32. steps:
  33. - name: Checkout code
  34. uses: actions/checkout@v4
  35. - name: Setup Node.js
  36. uses: actions/setup-node@v4
  37. with:
  38. node-version: '18'
  39. cache: 'npm'
  40. - name: Install dependencies
  41. run: npm run install:all
  42. - name: Verify all translations are complete
  43. run: node scripts/find-missing-translations.js
  44. knip:
  45. runs-on: ubuntu-latest
  46. steps:
  47. - name: Checkout code
  48. uses: actions/checkout@v4
  49. - name: Setup Node.js
  50. uses: actions/setup-node@v4
  51. with:
  52. node-version: '18'
  53. cache: 'npm'
  54. - name: Install dependencies
  55. run: npm run install:all
  56. - name: Run knip checks
  57. run: npm run knip
  58. test-extension:
  59. runs-on: ${{ matrix.os }}
  60. strategy:
  61. matrix:
  62. os: [ubuntu-latest, windows-latest]
  63. steps:
  64. - name: Checkout code
  65. uses: actions/checkout@v4
  66. - name: Setup Node.js
  67. uses: actions/setup-node@v4
  68. with:
  69. node-version: ${{ env.NODE_VERSION }}
  70. cache: 'npm'
  71. - name: Install dependencies
  72. run: npm run install:all
  73. - name: Compile (to build and copy WASM files)
  74. run: npm run compile
  75. - name: Run unit tests
  76. run: npx jest --silent
  77. test-webview:
  78. runs-on: ${{ matrix.os }}
  79. strategy:
  80. matrix:
  81. os: [ubuntu-latest, windows-latest]
  82. steps:
  83. - name: Checkout code
  84. uses: actions/checkout@v4
  85. - name: Setup Node.js
  86. uses: actions/setup-node@v4
  87. with:
  88. node-version: '18'
  89. cache: 'npm'
  90. - name: Install dependencies
  91. run: npm run install:all
  92. - name: Run unit tests
  93. working-directory: webview-ui
  94. run: npx jest --silent
  95. unit-test:
  96. needs: [test-extension, test-webview]
  97. runs-on: ubuntu-latest
  98. steps:
  99. - name: NO-OP
  100. run: echo "All unit tests passed."
  101. check-openrouter-api-key:
  102. runs-on: ubuntu-latest
  103. outputs:
  104. exists: ${{ steps.openrouter-api-key-check.outputs.defined }}
  105. steps:
  106. - name: Check if OpenRouter API key exists
  107. id: openrouter-api-key-check
  108. shell: bash
  109. run: |
  110. if [ "${{ secrets.OPENROUTER_API_KEY }}" != '' ]; then
  111. echo "defined=true" >> $GITHUB_OUTPUT;
  112. else
  113. echo "defined=false" >> $GITHUB_OUTPUT;
  114. fi
  115. integration-test:
  116. runs-on: ubuntu-latest
  117. needs: [check-openrouter-api-key]
  118. if: needs.check-openrouter-api-key.outputs.exists == 'true'
  119. steps:
  120. - name: Checkout code
  121. uses: actions/checkout@v4
  122. - name: Setup Node.js
  123. uses: actions/setup-node@v4
  124. with:
  125. node-version: ${{ env.NODE_VERSION }}
  126. cache: 'npm'
  127. - name: Install dependencies
  128. run: npm run install:all
  129. - name: Create .env.local file
  130. working-directory: e2e
  131. run: echo "OPENROUTER_API_KEY=${{ secrets.OPENROUTER_API_KEY }}" > .env.local
  132. - name: Run integration tests
  133. working-directory: e2e
  134. run: xvfb-run -a npm run ci