Skip to content

Commit 066a3bc

Browse files
committed
Integrate PestPHP 4 Browser Tests
Signed-off-by: Mior Muhammad Zaki <[email protected]>
1 parent d75312a commit 066a3bc

File tree

11 files changed

+82
-10
lines changed

11 files changed

+82
-10
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88

99
CHANGELOG.md export-ignore
1010
README.md export-ignore
11+
.github/workflows/browser-test.yml export-ignore

.github/workflows/browser-tests.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: browser-tests
2+
3+
on:
4+
push:
5+
branches:
6+
- pest-ci
7+
- develop
8+
- main
9+
pull_request:
10+
branches:
11+
- pest-ci
12+
- develop
13+
- main
14+
15+
jobs:
16+
ci:
17+
runs-on: ubuntu-latest
18+
19+
steps:
20+
- name: Checkout
21+
uses: actions/checkout@v4
22+
23+
- name: Setup PHP
24+
uses: shivammathur/setup-php@v2
25+
with:
26+
php-version: 8.4
27+
tools: composer:v2
28+
coverage: xdebug
29+
30+
- name: Setup Node
31+
uses: actions/setup-node@v4
32+
with:
33+
node-version: '22'
34+
cache: 'npm'
35+
36+
- name: Install Node Dependencies
37+
run: npm ci
38+
39+
- name: Install Playwright Dependencies
40+
run: npm install playwright@latest
41+
42+
- name: Install Playwright Browsers
43+
run: npx playwright install --with-deps
44+
45+
- name: Add `laravel-labs/starter-kit-browser-tests` Repository
46+
run: |
47+
composer config repositories.browser-tests '{"type": "vcs", "url": "https://github.com/laravel-labs/starter-kit-browser-tests"}' --file composer.json
48+
composer remove "phpunit/phpunit" --dev --no-update
49+
composer require "laravel-labs/starter-kit-browser-tests:dev-main@dev" --dev --no-update
50+
51+
- name: Install Dependencies
52+
run: composer install --no-interaction --prefer-dist --optimize-autoloader
53+
54+
- name: Copy Environment File
55+
run: cp .env.example .env
56+
57+
- name: Generate Application Key
58+
run: php artisan key:generate
59+
60+
- name: Setup Test Environment
61+
run: |
62+
cp vendor/laravel-labs/starter-kit-browser-tests/phpunit.xml.dist .
63+
rm phpunit.xml
64+
rm -Rf tests/
65+
cp -rf vendor/laravel-labs/starter-kit-browser-tests/tests/ tests/
66+
67+
- name: Build Assets
68+
run: npm run build
69+
70+
- name: Tests
71+
run: php vendor/bin/pest

resources/js/components/DeleteUser.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const passwordInput = ref<InstanceType<typeof Input> | null>(null);
3333
</div>
3434
<Dialog>
3535
<DialogTrigger as-child>
36-
<Button variant="destructive">Delete account</Button>
36+
<Button variant="destructive" data-test="delete-user-button">Delete account</Button>
3737
</DialogTrigger>
3838
<DialogContent>
3939
<Form
@@ -75,7 +75,7 @@ const passwordInput = ref<InstanceType<typeof Input> | null>(null);
7575
</Button>
7676
</DialogClose>
7777

78-
<Button type="submit" variant="destructive" :disabled="processing"> Delete account </Button>
78+
<Button type="submit" variant="destructive" :disabled="processing" data-test="confirm-delete-user-button"> Delete account </Button>
7979
</DialogFooter>
8080
</Form>
8181
</DialogContent>

resources/js/components/UserMenuContent.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ defineProps<Props>();
3535
</DropdownMenuGroup>
3636
<DropdownMenuSeparator />
3737
<DropdownMenuItem :as-child="true">
38-
<Link class="block w-full" :href="logout()" @click="handleLogout" as="button">
38+
<Link class="block w-full" :href="logout()" @click="handleLogout" as="button" data-test="logout-button">
3939
<LogOut class="mr-2 h-4 w-4" />
4040
Log out
4141
</Link>

resources/js/pages/auth/ConfirmPassword.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import { LoaderCircle } from 'lucide-vue-next';
3131
</div>
3232

3333
<div class="flex items-center">
34-
<Button class="w-full" :disabled="processing">
34+
<Button class="w-full" :disabled="processing" data-test="confirm-password-button">
3535
<LoaderCircle v-if="processing" class="h-4 w-4 animate-spin" />
3636
Confirm Password
3737
</Button>

resources/js/pages/auth/ForgotPassword.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ defineProps<{
3232
</div>
3333

3434
<div class="my-6 flex items-center justify-start">
35-
<Button class="w-full" :disabled="processing">
35+
<Button class="w-full" :disabled="processing" data-test="email-password-reset-link-button">
3636
<LoaderCircle v-if="processing" class="h-4 w-4 animate-spin" />
3737
Email password reset link
3838
</Button>

resources/js/pages/auth/Login.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ defineProps<{
7272
</Label>
7373
</div>
7474

75-
<Button type="submit" class="mt-4 w-full" :tabindex="4" :disabled="processing">
75+
<Button type="submit" class="mt-4 w-full" :tabindex="4" :disabled="processing" data-test="login-button">
7676
<LoaderCircle v-if="processing" class="h-4 w-4 animate-spin" />
7777
Log in
7878
</Button>

resources/js/pages/auth/Register.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ import { LoaderCircle } from 'lucide-vue-next';
5454
<InputError :message="errors.password_confirmation" />
5555
</div>
5656

57-
<Button type="submit" class="mt-2 w-full" tabindex="5" :disabled="processing">
57+
<Button type="submit" class="mt-2 w-full" tabindex="5" :disabled="processing" data-test="register-user-button">
5858
<LoaderCircle v-if="processing" class="h-4 w-4 animate-spin" />
5959
Create account
6060
</Button>

resources/js/pages/auth/ResetPassword.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const inputEmail = ref(props.email);
6161
<InputError :message="errors.password_confirmation" />
6262
</div>
6363

64-
<Button type="submit" class="mt-4 w-full" :disabled="processing">
64+
<Button type="submit" class="mt-4 w-full" :disabled="processing" data-test="reset-password-button">
6565
<LoaderCircle v-if="processing" class="h-4 w-4 animate-spin" />
6666
Reset password
6767
</Button>

resources/js/pages/settings/Password.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const currentPasswordInput = ref<HTMLInputElement | null>(null);
8484
</div>
8585

8686
<div class="flex items-center gap-4">
87-
<Button :disabled="processing">Save password</Button>
87+
<Button :disabled="processing" data-test="update-password-button">Save password</Button>
8888

8989
<Transition
9090
enter-active-class="transition ease-in-out"

0 commit comments

Comments
 (0)