feat: add accessibility improvements and enhance UI components with A… #89
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: deploy | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: {} | |
jobs: | |
setup: | |
name: 🔧 Setup | |
timeout-minutes: 10 | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- name: ⎔ Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 24 | |
- name: ▶️ Run setup script | |
run: npm run setup | |
- name: ʦ TypeScript | |
run: npm run typecheck | |
- name: ⬣ ESLint | |
# run: npm run lint | |
run: echo "Linting is disabled" | |
tests: | |
name: 🧪 Test | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
# Use continue-on-error to ensure this job doesn't fail the workflow | |
continue-on-error: true | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- name: ⎔ Setup node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 24 | |
- name: 📦 Install dependencies | |
run: npm ci | |
- name: 📦 Cache Playwright Browsers | |
uses: actions/cache@v4 | |
id: playwright-cache | |
with: | |
path: ~/.cache/ms-playwright | |
key: | |
${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-playwright- | |
- name: 📥 Install Playwright Browsers | |
if: steps.playwright-cache.outputs.cache-hit != 'true' | |
run: npx playwright install chromium --with-deps | |
- name: 🚀 Start app server | |
run: | | |
npm run dev --silent --prefix ./epicshop/epic-me -- --clearScreen=false --logLevel=error --strictPort & | |
echo $! > /tmp/app-server.pid | |
# Wait for server to be ready | |
timeout 30 bash -c 'until curl -f http://localhost:7787/healthcheck >/dev/null 2>&1; do sleep 1; done' | |
- name: 🧪 Run tests | |
id: run_tests | |
run: node ./epicshop/test.js ..s | |
- name: 🛑 Stop app server | |
if: always() | |
run: | | |
if [ -f /tmp/app-server.pid ]; then | |
kill $(cat /tmp/app-server.pid) 2>/dev/null || true | |
rm -f /tmp/app-server.pid | |
fi | |
deploy: | |
name: 🚀 Deploy | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
# only deploy main branch on pushes on non-forks | |
if: | |
${{ github.ref == 'refs/heads/main' && github.event_name == 'push' && | |
github.repository_owner == 'epicweb-dev' }} | |
steps: | |
- name: ⬇️ Checkout repo | |
uses: actions/checkout@v4 | |
- name: 🎈 Setup Fly | |
uses: superfly/flyctl-actions/[email protected] | |
- name: 🚀 Deploy | |
run: | |
flyctl deploy --remote-only --build-arg | |
EPICSHOP_GITHUB_REPO=https://github.com/${{ github.repository }} | |
--build-arg EPICSHOP_COMMIT_SHA=${{ github.sha }} | |
working-directory: ./epicshop | |
env: | |
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }} |