From f54ba5964af1d753925ff6061787143beccfbe85 Mon Sep 17 00:00:00 2001 From: Pushpak Chhajed Date: Sat, 20 Sep 2025 23:38:15 +0530 Subject: [PATCH 1/3] Optimize CI workflows by adding caching for Composer and Playwright --- .github/workflows/livewire-starter-kit.yml | 31 +++++++++++++++++----- .github/workflows/react-starter-kit.yml | 31 +++++++++++++++++----- .github/workflows/vue-starter-kit.yml | 31 +++++++++++++++++----- 3 files changed, 72 insertions(+), 21 deletions(-) diff --git a/.github/workflows/livewire-starter-kit.yml b/.github/workflows/livewire-starter-kit.yml index 71e2c51..da4da96 100644 --- a/.github/workflows/livewire-starter-kit.yml +++ b/.github/workflows/livewire-starter-kit.yml @@ -13,6 +13,8 @@ permissions: jobs: tests: runs-on: ubuntu-latest + env: + APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/livewire-starter-kit strategy: fail-fast: true @@ -25,9 +27,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: 20 + cache: 'npm' + cache-dependency-path: 'package-lock.json' - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -35,22 +40,34 @@ jobs: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite coverage: none + tools: composer:v2 + + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ~/.composer/cache + key: composer-${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }} + restore-keys: composer-${{ runner.os }}-${{ matrix.php }} - name: Install Composer dependencies - run: composer install --prefer-dist --no-interaction --no-progress + run: composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader - - name: Install dependencies + - name: Install Node dependencies run: npm ci + - name: Cache Playwright browsers + uses: actions/cache@v4 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install Playwright browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' run: npx playwright install --with-deps - name: Build `livewire-starter-kit` run: composer run livewire:build - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/livewire-starter-kit - name: Execute tests run: php vendor/bin/pest - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/livewire-starter-kit diff --git a/.github/workflows/react-starter-kit.yml b/.github/workflows/react-starter-kit.yml index f4ae92d..fe6e381 100644 --- a/.github/workflows/react-starter-kit.yml +++ b/.github/workflows/react-starter-kit.yml @@ -13,6 +13,8 @@ permissions: jobs: tests: runs-on: ubuntu-latest + env: + APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/react-starter-kit strategy: fail-fast: true @@ -25,9 +27,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: 20 + cache: 'npm' + cache-dependency-path: 'package-lock.json' - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -35,22 +40,34 @@ jobs: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite coverage: none + tools: composer:v2 + + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ~/.composer/cache + key: composer-${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }} + restore-keys: composer-${{ runner.os }}-${{ matrix.php }} - name: Install Composer dependencies - run: composer install --prefer-dist --no-interaction --no-progress + run: composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader - - name: Install dependencies + - name: Install Node dependencies run: npm ci + - name: Cache Playwright browsers + uses: actions/cache@v4 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install Playwright browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' run: npx playwright install --with-deps - name: Build `react-starter-kit` run: composer run react:build - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/react-starter-kit - name: Execute tests run: php vendor/bin/pest - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/react-starter-kit diff --git a/.github/workflows/vue-starter-kit.yml b/.github/workflows/vue-starter-kit.yml index 4a513ce..251b2ad 100644 --- a/.github/workflows/vue-starter-kit.yml +++ b/.github/workflows/vue-starter-kit.yml @@ -13,6 +13,8 @@ permissions: jobs: tests: runs-on: ubuntu-latest + env: + APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/vue-starter-kit strategy: fail-fast: true @@ -25,9 +27,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: 20 + cache: 'npm' + cache-dependency-path: 'package-lock.json' - name: Setup PHP uses: shivammathur/setup-php@v2 @@ -35,22 +40,34 @@ jobs: php-version: ${{ matrix.php }} extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite coverage: none + tools: composer:v2 + + - name: Cache Composer dependencies + uses: actions/cache@v4 + with: + path: ~/.composer/cache + key: composer-${{ runner.os }}-${{ matrix.php }}-${{ hashFiles('**/composer.lock') }} + restore-keys: composer-${{ runner.os }}-${{ matrix.php }} - name: Install Composer dependencies - run: composer install --prefer-dist --no-interaction --no-progress + run: composer install --prefer-dist --no-interaction --no-progress --optimize-autoloader - - name: Install dependencies + - name: Install Node dependencies run: npm ci + - name: Cache Playwright browsers + uses: actions/cache@v4 + id: playwright-cache + with: + path: ~/.cache/ms-playwright + key: playwright-${{ runner.os }}-${{ hashFiles('package-lock.json') }} + - name: Install Playwright browsers + if: steps.playwright-cache.outputs.cache-hit != 'true' run: npx playwright install --with-deps - name: Build `vue-starter-kit` run: composer run vue:build - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/vue-starter-kit - name: Execute tests run: php vendor/bin/pest - env: - APP_BASE_PATH: ${{ github.workspace }}/vendor/laravel/vue-starter-kit From 90c6c241090f1e0f7713ef167a52928ddd664efe Mon Sep 17 00:00:00 2001 From: Pushpak Chhajed Date: Mon, 22 Sep 2025 10:36:17 +0530 Subject: [PATCH 2/3] Update CI workflows to use actions/checkout@v5 --- .github/workflows/livewire-starter-kit.yml | 2 +- .github/workflows/react-starter-kit.yml | 2 +- .github/workflows/vue-starter-kit.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/livewire-starter-kit.yml b/.github/workflows/livewire-starter-kit.yml index da4da96..46c39bd 100644 --- a/.github/workflows/livewire-starter-kit.yml +++ b/.github/workflows/livewire-starter-kit.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/react-starter-kit.yml b/.github/workflows/react-starter-kit.yml index fe6e381..c7b0f61 100644 --- a/.github/workflows/react-starter-kit.yml +++ b/.github/workflows/react-starter-kit.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/vue-starter-kit.yml b/.github/workflows/vue-starter-kit.yml index 251b2ad..6bf5212 100644 --- a/.github/workflows/vue-starter-kit.yml +++ b/.github/workflows/vue-starter-kit.yml @@ -25,7 +25,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup Node.js uses: actions/setup-node@v4 From 928d347805cd4ba98031680de9f98e95ed7da428 Mon Sep 17 00:00:00 2001 From: Pushpak Chhajed Date: Mon, 29 Sep 2025 11:26:33 +0530 Subject: [PATCH 3/3] Fix the flaky logout test (#3) * Fix the logout test to use XPath for username click * Update tests/Browser/Auth/AuthenticationTest.php * Use data-test attribute instead of xpath --------- Co-authored-by: Mior Muhammad Zaki --- tests/Browser/Auth/AuthenticationTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Browser/Auth/AuthenticationTest.php b/tests/Browser/Auth/AuthenticationTest.php index 7f8806a..c0e2070 100644 --- a/tests/Browser/Auth/AuthenticationTest.php +++ b/tests/Browser/Auth/AuthenticationTest.php @@ -50,7 +50,7 @@ actingAs($user); visit(route('dashboard')) - ->click($user->name) + ->click('@sidebar-menu-button') ->click('@logout-button') ->assertUrlIs(route('home')) ->assertNoConsoleLogs()