Skip to content

Commit 7c30fae

Browse files
committed
Upgrade Inertia.js v2 frontend, replace precognition, add smoke tests
- Upgrade @inertiajs/vue3 from v1 to v2 - Replace laravel-precognition-vue-inertia with built-in Inertia v2 useForm - Add 28 smoke tests with real Hydra integration - Add Hydra service to GitHub Actions CI
1 parent 194de1c commit 7c30fae

17 files changed

Lines changed: 512 additions & 87 deletions

File tree

.env.testing

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ DB_DATABASE=idp-test
77
DB_USERNAME=idp
88
DB_PASSWORD=idp
99

10-
HYDRA_ADMIN_URL=http://localhost:4445
10+
HYDRA_ADMIN_URL=http://hydra:4445/
11+
HYDRA_PUBLIC_URL=http://hydra:4444
1112
HASHIDS_SALT=1
1213
HASHIDS_USER_SALT=2
1314
HASHIDS_GROUP_SALT=3

.github/workflows/laravel.yml

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,29 @@ jobs:
2424
--health-timeout=5s
2525
--health-retries=3
2626
27+
hydra:
28+
image: oryd/hydra:v2.3
29+
env:
30+
DSN: "memory"
31+
SECRETS_SYSTEM: "testing-secret-that-is-at-least-32-chars-long"
32+
URLS_SELF_ISSUER: "http://localhost:4444/"
33+
URLS_CONSENT: "http://localhost/auth/consent"
34+
URLS_LOGIN: "http://localhost/auth/login"
35+
URLS_LOGOUT: "http://localhost/auth/logout"
36+
URLS_ERROR: "http://localhost/auth/error"
37+
URLS_POST_LOGOUT_REDIRECT: "http://localhost/auth/choose"
38+
LOG_LEAK_SENSITIVE_VALUES: "true"
39+
DEV: "true"
40+
ports:
41+
- 4444:4444
42+
- 4445:4445
43+
options: >-
44+
--health-cmd "wget --no-verbose --tries=1 --spider http://localhost:4445/health/alive || exit 1"
45+
--health-interval=10s
46+
--health-timeout=5s
47+
--health-retries=5
48+
--health-start-period=10s
49+
2750
steps:
2851
- uses: actions/checkout@v4
2952

@@ -78,10 +101,14 @@ jobs:
78101
echo "AWS_DEFAULT_REGION=us-east-1" >> .env
79102
echo "AWS_BUCKET_AVATARS=test-bucket" >> .env
80103
echo "AWS_ENDPOINT=http://localhost:9000" >> .env
81-
# Override .env.testing DB host for CI (Docker service uses 127.0.0.1)
104+
echo "HYDRA_ADMIN_URL=http://127.0.0.1:4445/" >> .env
105+
echo "HYDRA_PUBLIC_URL=http://127.0.0.1:4444" >> .env
106+
# Override .env.testing for CI (Docker services use 127.0.0.1)
82107
sed -i 's/DB_HOST=mysql/DB_HOST=127.0.0.1/' .env.testing
83108
sed -i 's/DB_USERNAME=idp/DB_USERNAME=root/' .env.testing
84109
sed -i 's/DB_PASSWORD=idp/DB_PASSWORD=password/' .env.testing
110+
sed -i 's|HYDRA_ADMIN_URL=.*|HYDRA_ADMIN_URL=http://127.0.0.1:4445/|' .env.testing
111+
sed -i 's|HYDRA_PUBLIC_URL=.*|HYDRA_PUBLIC_URL=http://127.0.0.1:4444|' .env.testing
85112
86113
- name: Generate Application Key
87114
run: php artisan key:generate

package-lock.json

Lines changed: 89 additions & 65 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
},
99
"dependencies": {
1010
"github-markdown-css": "^5.7.0",
11-
"laravel-precognition-vue-inertia": "^0.6.0",
1211
"md-editor-v3": "^4.21.3",
1312
"primeicons": "^7.0.0",
1413
"primevue": "^3.53.1",
@@ -17,7 +16,7 @@
1716
"devDependencies": {
1817
"@headlessui/vue": "^1.7.7",
1918
"@heroicons/vue": "^2.1.1",
20-
"@inertiajs/vue3": "^1.2",
19+
"@inertiajs/vue3": "^2.3.18",
2120
"@tailwindcss/forms": "^0.5.7",
2221
"@tailwindcss/typography": "^0.5.10",
2322
"@vitejs/plugin-vue": "^6.0.0",

resources/js/Pages/Auth/ForgotPassword.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,10 @@ import Logo from '@/Auth/Logo.vue'
4949
import LoginScreenWelcome from '@/Auth/LoginScreenWelcome.vue'
5050
import FormInput from '@/Auth/Form/AuthFormInput.vue'
5151
import AuthLayout from '@/Layouts/AuthLayout.vue'
52-
import {Head, Link} from '@inertiajs/vue3'
52+
import {Head, Link, useForm} from '@inertiajs/vue3'
5353
import InputText from "primevue/inputtext";
5454
import InlineMessage from "primevue/inlinemessage";
5555
import Button from "primevue/button";
56-
import {useForm} from 'laravel-precognition-vue-inertia';
5756
5857
defineOptions({layout: AuthLayout});
5958
const props = defineProps({

resources/js/Pages/Auth/Login.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,12 @@ import Logo from '@/Auth/Logo.vue'
8282
import LoginScreenWelcome from '@/Auth/LoginScreenWelcome.vue'
8383
import FormInput from '@/Auth/Form/AuthFormInput.vue'
8484
import AuthLayout from '@/Layouts/AuthLayout.vue'
85-
import {Head, Link} from '@inertiajs/vue3'
85+
import {Head, Link, useForm} from '@inertiajs/vue3'
8686
import {ref} from 'vue'
8787
import InputText from 'primevue/inputtext';
8888
import Button from 'primevue/button';
8989
import Checkbox from 'primevue/checkbox';
9090
import InlineMessage from 'primevue/inlinemessage';
91-
import {useForm} from 'laravel-precognition-vue-inertia';
9291
9392
defineOptions({
9493
layout: AuthLayout

resources/js/Pages/Auth/Register.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,8 @@ import Logo from '@/Auth/Logo.vue'
7979
import LoginScreenWelcome from '@/Auth/LoginScreenWelcome.vue'
8080
import FormInput from '@/Auth/Form/AuthFormInput.vue'
8181
import AuthLayout from '@/Layouts/AuthLayout.vue'
82-
import {Head, Link} from '@inertiajs/vue3'
82+
import {Head, Link, useForm} from '@inertiajs/vue3'
8383
import PasswordInfoBox from '@/Auth/PasswordInfoBox.vue'
84-
import {useForm} from 'laravel-precognition-vue-inertia'
8584
import InputText from "primevue/inputtext";
8685
import InlineMessage from "primevue/inlinemessage";
8786
import Button from "primevue/button";

resources/js/Pages/Auth/ResetPassword.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,10 @@ import LoginScreenWelcome from '@/Auth/LoginScreenWelcome.vue'
7272
import FormInput from '@/Auth/Form/AuthFormInput.vue'
7373
import AuthLayout from '@/Layouts/AuthLayout.vue'
7474
import PasswordInfoBox from '@/Auth/PasswordInfoBox.vue'
75-
import {Head, Link} from '@inertiajs/vue3'
75+
import {Head, Link, useForm} from '@inertiajs/vue3'
7676
import InputText from "primevue/inputtext";
7777
import InlineMessage from "primevue/inlinemessage";
7878
import Button from "primevue/button";
79-
import {useForm} from 'laravel-precognition-vue-inertia';
8079
8180
defineOptions({layout: AuthLayout});
8281
const props = defineProps({

resources/js/Pages/Auth/TwoFactor.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
33
import {computed, ref} from "vue";
44
import LoginScreenWelcome from "@/Auth/LoginScreenWelcome.vue";
5-
import {Head} from "@inertiajs/vue3";
6-
import {useForm} from 'laravel-precognition-vue-inertia'
5+
import {Head, useForm} from "@inertiajs/vue3";
76
import InputText from "primevue/inputtext";
87
import InlineMessage from "primevue/inlinemessage";
98
import Button from "primevue/button";

resources/js/Pages/Settings/Profile.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@
138138
</template>
139139

140140
<script setup>
141-
import {Head, Link, usePage} from '@inertiajs/vue3'
141+
import {Head, Link, useForm, usePage} from '@inertiajs/vue3'
142142
import AvatarImage from '@/Pages/Profile/AvatarImage.vue'
143143
import SettingsHeader from '@/Components/Settings/SettingsHeader.vue'
144144
import SettingsSubHeader from '@/Components/Settings/SettingsSubHeader.vue'
@@ -148,7 +148,6 @@ import PrimaryButton from '@/Components/PrimaryButton.vue'
148148
import AvatarModal from '@/Profile/AvatarModal.vue'
149149
import {computed, ref} from "vue";
150150
import BaseAlert from "@/Components/BaseAlert.vue";
151-
import {useForm} from 'laravel-precognition-vue-inertia';
152151
import InputText from "primevue/inputtext";
153152
import InlineMessage from "primevue/inlinemessage";
154153
import Button from "primevue/button";

0 commit comments

Comments
 (0)