name: Tests CI on: push: branches: [ main, master ] pull_request: branches: [ main, master ] jobs: test: runs-on: ubuntu-latest 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: "huchenlei/ComfyUI_frontend" path: "ComfyUI_frontend" ref: ${{ github.head_ref }} - name: Get commit message id: commit-message run: echo "::set-output name=message::$(git log -1 --pretty=%B)" working-directory: ComfyUI_frontend - name: Skip CI if: contains(steps.commit-message.outputs.message, '[skip ci]') run: echo "Skipping CI as commit contains '[skip ci]'" continue-on-error: true working-directory: ComfyUI_frontend - uses: actions/setup-node@v3 with: node-version: lts/* - 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: Build & Install ComfyUI_frontend run: | npm ci npm run build rm -rf ../ComfyUI/web/* mv dist/* ../ComfyUI/web/ working-directory: ComfyUI_frontend - name: Start ComfyUI server run: | python main.py --cpu & wait-for-it --service 127.0.0.1:8188 -t 600 working-directory: ComfyUI - name: Run UI tests run: | npm run test:generate npm test -- --verbose working-directory: ComfyUI_frontend - name: Install Playwright Browsers run: npx playwright install --with-deps working-directory: ComfyUI_frontend - name: Run Playwright tests id: playwright-tests run: npx playwright test continue-on-error: true working-directory: ComfyUI_frontend - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: ComfyUI_frontend/playwright-report/ retention-days: 30 - name: Debugging info run: | echo "Branch: ${{ github.head_ref }}" git status working-directory: ComfyUI_frontend - name: Commit updated expectations if: steps.playwright-tests.outcome == 'failure' && contains(github.event.pull_request.labels.*.name, 'New Browser Test Expectations') # Pushes back to the source branch of the PR run: | git config --global user.name 'github-actions' git config --global user.email 'github-actions@github.com' git add browser_tests git commit -m "Update test expectations [skip ci]" git push origin HEAD:${{ github.head_ref }} working-directory: ComfyUI_frontend