name: Tests CI on: push: branches: [main, master, core/*, desktop/*] pull_request: branches-ignore: [wip/*, draft/*, temp/*, vue-nodes-migration] jobs: setup: runs-on: ubuntu-latest outputs: cache-key: ${{ steps.cache-key.outputs.key }} steps: - name: Checkout ComfyUI uses: actions/checkout@v4 with: repository: 'comfyanonymous/ComfyUI' path: 'ComfyUI' ref: master - name: Checkout ComfyUI_frontend uses: actions/checkout@v4 with: repository: 'Comfy-Org/ComfyUI_frontend' path: 'ComfyUI_frontend' - name: Checkout ComfyUI_devtools uses: actions/checkout@v4 with: repository: 'Comfy-Org/ComfyUI_devtools' path: 'ComfyUI/custom_nodes/ComfyUI_devtools' ref: 'd05fd48dd787a4192e16802d4244cfcc0e2f9684' - uses: actions/setup-node@v4 with: node-version: lts/* cache: 'npm' cache-dependency-path: ComfyUI_frontend/package-lock.json - name: Cache Vite build uses: actions/cache@v4 with: path: ComfyUI_frontend/node_modules/.vite key: ${{ runner.os }}-vite-build-${{ hashFiles('ComfyUI_frontend/package-lock.json') }} restore-keys: | ${{ runner.os }}-vite-build- - name: Build ComfyUI_frontend run: | npm ci npm run build working-directory: ComfyUI_frontend - name: Generate cache key id: cache-key run: echo "key=$(date +%s)" >> $GITHUB_OUTPUT - name: Save cache uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 with: path: | ComfyUI ComfyUI_frontend key: comfyui-setup-${{ steps.cache-key.outputs.key }} playwright-tests: needs: setup runs-on: ubuntu-latest strategy: fail-fast: false matrix: browser: [chromium, chromium-2x, chromium-0.5x, mobile-chrome] steps: - name: Wait for cache propagation run: sleep 10 - name: Restore cached setup uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 with: fail-on-cache-miss: true path: | ComfyUI ComfyUI_frontend key: comfyui-setup-${{ needs.setup.outputs.cache-key }} - uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install requirements run: | python -m pip install --upgrade pip pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu pip install -r requirements.txt pip install wait-for-it working-directory: ComfyUI - name: Start ComfyUI server run: | python main.py --cpu --multi-user --front-end-root ../ComfyUI_frontend/dist & wait-for-it --service 127.0.0.1:8188 -t 600 working-directory: ComfyUI - name: Get Playwright version id: playwright-version run: echo "version=$(npm list @playwright/test --depth=0 --json | jq -r '.dependencies["@playwright/test"].version')" >> $GITHUB_OUTPUT working-directory: ComfyUI_frontend - name: Cache Playwright browsers uses: actions/cache@v4 id: playwright-cache with: path: ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}-chromium restore-keys: | ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.version }}- ${{ runner.os }}-playwright- - name: Install Playwright Browsers if: steps.playwright-cache.outputs.cache-hit != 'true' run: npx playwright install chromium --with-deps working-directory: ComfyUI_frontend - name: Run Playwright tests (${{ matrix.browser }}) run: npx playwright test --project=${{ matrix.browser }} working-directory: ComfyUI_frontend - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report-${{ matrix.browser }} path: ComfyUI_frontend/playwright-report/ retention-days: 30