Skip to content

feat: add Code Quality finding type with comment-on-issue workflow #86

feat: add Code Quality finding type with comment-on-issue workflow

feat: add Code Quality finding type with comment-on-issue workflow #86

Workflow file for this run

name: Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Run unit tests
run: npm run test:unit
- name: Generate coverage report
run: npm run coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
with:
files: ./coverage/lcov.info
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
extension-tests:
name: Extension Tests (${{ matrix.os }}, ${{ matrix.vscode-version }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
vscode-version: [stable, insiders]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Compile extension
run: npm run compile
# Linux requires a virtual display for VS Code
- name: Run extension tests (Linux)
if: runner.os == 'Linux'
run: xvfb-run -a npm run test:ext
env:
DISPLAY: ":99"
VSCODE_VERSION: ${{ matrix.vscode-version }}
# Allow insiders to fail (may have breaking changes)
continue-on-error: ${{ matrix.vscode-version == 'insiders' }}
- name: Run extension tests (macOS/Windows)
if: runner.os != 'Linux'
run: npm run test:ext
env:
VSCODE_VERSION: ${{ matrix.vscode-version }}
# Allow insiders to fail (may have breaking changes)
continue-on-error: ${{ matrix.vscode-version == 'insiders' }}
ui-tests:
name: UI Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Compile extension
run: npm run compile
# https://github.com/redhat-developer/vscode-extension-tester/issues/2050
- name: Allow unprivileged user namespace (Ubuntu AppArmor)
if: runner.os == 'Linux'
run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
# Linux requires a virtual display for VS Code / ChromeDriver
- name: Run UI tests (Linux)
if: runner.os == 'Linux'
run: xvfb-run -a npm run test:ui
env:
DISPLAY: ":99"
- name: Run UI tests (macOS/Windows)
if: runner.os != 'Linux'
run: npm run test:ui
build:
name: Build Extension
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 20
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build production package
run: npm run package
- name: Verify build output
run: |
test -f out/extension.js || (echo "Extension build failed" && exit 1)
echo "Build successful"