test.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. name: test
  2. on:
  3. push:
  4. branches:
  5. - dev
  6. pull_request:
  7. workflow_dispatch:
  8. jobs:
  9. test:
  10. runs-on: blacksmith-4vcpu-ubuntu-2404
  11. steps:
  12. - name: Checkout repository
  13. uses: actions/checkout@v4
  14. with:
  15. token: ${{ secrets.GITHUB_TOKEN }}
  16. - name: Setup Bun
  17. uses: ./.github/actions/setup-bun
  18. - name: Install Playwright browsers
  19. working-directory: packages/app
  20. run: bunx playwright install --with-deps
  21. - name: Seed opencode data
  22. working-directory: packages/opencode
  23. run: bun script/seed-e2e.ts
  24. env:
  25. MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
  26. OPENCODE_DISABLE_MODELS_FETCH: "true"
  27. OPENCODE_DISABLE_SHARE: "true"
  28. OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
  29. OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
  30. OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
  31. OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
  32. XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
  33. XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
  34. XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
  35. XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
  36. OPENCODE_E2E_PROJECT_DIR: ${{ github.workspace }}
  37. OPENCODE_E2E_SESSION_TITLE: "E2E Session"
  38. OPENCODE_E2E_MESSAGE: "Seeded for UI e2e"
  39. OPENCODE_E2E_MODEL: "opencode/gpt-5-nano"
  40. - name: Run opencode server
  41. run: bun run dev -- --print-logs --log-level WARN serve --port 4096 --hostname 0.0.0.0 &
  42. env:
  43. MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
  44. OPENCODE_DISABLE_MODELS_FETCH: "true"
  45. OPENCODE_DISABLE_SHARE: "true"
  46. OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
  47. OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
  48. OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
  49. OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
  50. XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
  51. XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
  52. XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
  53. XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
  54. OPENCODE_CLIENT: "app"
  55. - name: Wait for opencode server
  56. run: |
  57. for i in {1..60}; do
  58. curl -fsS "http://localhost:4096/global/health" > /dev/null && exit 0
  59. sleep 1
  60. done
  61. exit 1
  62. - name: run
  63. run: |
  64. git config --global user.email "[email protected]"
  65. git config --global user.name "opencode"
  66. bun turbo typecheck
  67. bun turbo test
  68. env:
  69. CI: true
  70. MODELS_DEV_API_JSON: ${{ github.workspace }}/packages/opencode/test/tool/fixtures/models-api.json
  71. OPENCODE_DISABLE_MODELS_FETCH: "true"
  72. OPENCODE_DISABLE_SHARE: "true"
  73. OPENCODE_DISABLE_LSP_DOWNLOAD: "true"
  74. OPENCODE_DISABLE_DEFAULT_PLUGINS: "true"
  75. OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: "true"
  76. OPENCODE_TEST_HOME: ${{ runner.temp }}/opencode-e2e/home
  77. XDG_DATA_HOME: ${{ runner.temp }}/opencode-e2e/share
  78. XDG_CACHE_HOME: ${{ runner.temp }}/opencode-e2e/cache
  79. XDG_CONFIG_HOME: ${{ runner.temp }}/opencode-e2e/config
  80. XDG_STATE_HOME: ${{ runner.temp }}/opencode-e2e/state
  81. PLAYWRIGHT_SERVER_HOST: "localhost"
  82. PLAYWRIGHT_SERVER_PORT: "4096"
  83. VITE_OPENCODE_SERVER_HOST: "localhost"
  84. VITE_OPENCODE_SERVER_PORT: "4096"
  85. OPENCODE_CLIENT: "app"
  86. timeout-minutes: 30