chore: heygermany customer project
Some checks failed
Main / Setup and Test (push) Has been cancelled
Main / Build Website (push) Has been cancelled

This commit is contained in:
e2e
2026-07-11 09:21:21 +02:00
commit 59b4a7a404
398 changed files with 38340 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
@smoke @auth
Feature: Auth pages
Login entry points should render their forms and support real session-based login.
Scenario: company login page renders
Given I visit "/en/company/auth/login"
Then I see "Login to Company Portal"
And I see "Email address"
And I see "Password"
And I see "Login"
Scenario: company login validates required fields
Given I visit "/en/company/auth/login"
When I click "Login"
Then I see "Email is required"
And I see "Password is required"
Scenario: company user can log in with real credentials
Given I visit "/en/company/auth/login"
When I log in as "e2e-company-login@heygermany.test" with password "CompanyPass123!"
Then the URL contains "/company"
And I see "Find qualified international nurses for German healthcare"
Scenario: company candidates requires authentication
Given I visit "/en/company/candidates"
Then the URL contains "/en/company/auth/login"
And I see "Login to Company Portal"
Scenario: company candidate detail requires authentication
Given I visit "/en/company/candidate/test-candidate"
Then the URL contains "/en/company/auth/login"
And I see "Login to Company Portal"
Scenario: backoffice login page renders
Given I visit "/en/backoffice/auth/login"
Then I see "Email address"
And I see "Password"
And I see "Login"
And the URL contains "/backoffice/auth/login"
Scenario: backoffice user can log in with real credentials
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
Then the URL contains "/backoffice/candidates"
And I see "Candidate Pool"
Scenario: backoffice candidates requires authentication
Given I visit "/en/backoffice/candidates"
Then the URL contains "/en/backoffice/auth/login"
And I see "Login"
Scenario: backoffice candidate detail requires authentication
Given I visit "/en/backoffice/candidate/test-candidate"
Then the URL contains "/en/backoffice/auth/login"
And I see "Login"
Scenario: candidate application requires authentication
Given I visit "/en/jobs/application"
Then the URL contains "/en/jobs/apply"
And I see "Who is This For?"
Scenario: logged-in company user is redirected away from company login
Given I visit "/en/company/auth/login"
When I log in as "e2e-company-login@heygermany.test" with password "CompanyPass123!"
And I visit "/en/company/auth/login"
Then the URL contains "/en/company/candidates"
And I see "Find qualified international nurses for German healthcare"
Scenario: company root redirects to candidates after login
Given I visit "/en/company/auth/login"
When I log in as "e2e-company-login@heygermany.test" with password "CompanyPass123!"
And I visit "/en/company"
Then the URL contains "/en/company/candidates"
Scenario: company root requires authentication
Given I visit "/en/company"
Then the URL contains "/en/company/auth/login"
And I see "Login to Company Portal"
Scenario: logged-in backoffice user is redirected away from backoffice login
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
And I visit "/en/backoffice/auth/login"
Then the URL contains "/en/backoffice/candidates"
And I see "Candidate Pool"
Scenario: backoffice dashboard redirects to candidates after login
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
And I visit "/en/backoffice/dashboard"
Then the URL contains "/en/backoffice/candidates"
Scenario: backoffice root requires authentication
Given I visit "/en/backoffice"
Then the URL contains "/en/backoffice/auth/login"
And I see "Login"
Scenario: company logout ends the protected session
Given I visit "/en/company/auth/login"
When I log in as "e2e-company-login@heygermany.test" with password "CompanyPass123!"
And I log out
And I wait for 3500 milliseconds
And I visit "/en/company/candidates"
Then the URL contains "/en/company/auth/login"
And I see "Login to Company Portal"
Scenario: backoffice logout ends the protected session
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
And I log out
And I wait for 3500 milliseconds
And I visit "/en/backoffice/candidates"
Then the URL contains "/en/backoffice/auth/login"
And I see "Login"

View File

@@ -0,0 +1,17 @@
@backoffice
Feature: Backoffice tools
Authenticated backoffice users should be able to reach the internal tools they use through the UI.
Scenario: backoffice translations page loads after login
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
And I visit "/en/backoffice/translations"
Then I see "Backend translations"
And I see "Save translation bundle"
Scenario: backoffice next steps guide loads after login
Given I visit "/en/backoffice/auth/login"
When I log in as "e2e-backoffice-login@heygermany.test" with password "BackofficePass123!"
And I visit "/en/backoffice/help/nextsteps"
Then I see "Translation System - CSV Guide"
And I see "Understanding the CSV Structure"

View File

@@ -0,0 +1,136 @@
@multi-actor
Feature: Multi-actor candidate workflows
Candidate journeys can span multiple roles and still stay coherent entirely through the UI.
Scenario: candidate can restart an application after backoffice invalidates it
Given the "candidate" actor visits "/en/jobs/apply"
When the "candidate" actor starts a new application
Then the "candidate" actor URL contains "/jobs/application"
When the "admin" actor logs into backoffice
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Invalid"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Please upload a clear and complete version of the missing or invalid document(s) so we can continue your evaluation."
When the "candidate" actor clicks "Upload documents again"
Then the "candidate" actor sees "Personal Info"
And the "candidate" actor URL contains "/jobs/application"
Scenario: candidate sees the submitted state after backoffice marks the application pending
Given the "candidate" actor visits "/en/jobs/apply"
When the "candidate" actor starts a new application
Then the "candidate" actor URL contains "/jobs/application"
When the "admin" actor logs into backoffice
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Pending"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Thanks! Your documents were uploaded successfully."
And the "candidate" actor sees "Weve got everything we need to start your personal evaluation"
Scenario: candidate result becomes visible to both the candidate and company after backoffice completes the review
Given the "candidate" actor visits "/en/jobs/apply"
When the "candidate" actor starts a new application
And the "candidate" actor completes and submits the candidate application
When the "admin" actor logs into backoffice
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor sees "Manual Assessment"
And the "admin" actor sets the backoffice field "Status In Home Country" to "Nurse"
And the "admin" actor sets the backoffice field "Status In Germany" to "Assistant Nurse"
And the "admin" actor sets the backoffice field "License Mandatory" to "No"
And the "admin" actor sets the backoffice field "Duration Requirements Met" to "Yes"
And the "admin" actor sets the verification field "Nursing Related Degree" to "Yes"
And the "admin" actor sets the verification field "Accredited University" to "Yes"
And the "admin" actor sets the verification field "Accredited Study Program" to "Yes"
And the "admin" actor sets the verification field "Is Nursing Focus" to "Yes"
And the "admin" actor sets the verification field "Has Theory" to "Yes"
And the "admin" actor sets the verification field "Has Practice" to "Yes"
And the "admin" actor sets the verification field "Duration Hours" to "4800"
Then the "admin" actor sees "Valid"
When the "admin" actor marks the candidate as "Complete"
And the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "A First Step Towards Your Nursing Career"
And the "candidate" actor sees "You Qualify as a Nursing Assistant in Berlin"
When the "company" actor logs into company
And the "company" actor opens the current candidate in company
Then the "company" actor URL contains "/en/company/candidate/"
And the "company" actor sees the current candidate name
And the "company" actor sees "Philippines"
Scenario: candidate sees both the submitted and invalidated states across repeated admin reviews
Given the "candidate" actor visits "/en/jobs/apply"
When the "candidate" actor starts a new application
And the "candidate" actor completes and submits the candidate application
When the "admin" actor logs into backoffice
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Pending"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Thanks! Your documents were uploaded successfully."
And the "candidate" actor sees "Weve got everything we need to start your personal evaluation"
When the "admin" actor visits "/en/backoffice/candidates"
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Invalid"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Please upload a clear and complete version of the missing or invalid document(s) so we can continue your evaluation."
When the "candidate" actor clicks "Upload documents again"
Then the "candidate" actor sees "Personal Info"
And the "candidate" actor URL contains "/jobs/application"
Scenario: candidate can move from submission to invalidation to resubmission and final company visibility
Given the "candidate" actor visits "/en/jobs/apply"
When the "candidate" actor starts a new application
And the "candidate" actor completes and submits the candidate application
When the "admin" actor logs into backoffice
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Pending"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Thanks! Your documents were uploaded successfully."
And the "candidate" actor sees "Weve got everything we need to start your personal evaluation"
When the "admin" actor visits "/en/backoffice/candidates"
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor marks the candidate as "Invalid"
When the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "Please upload a clear and complete version of the missing or invalid document(s) so we can continue your evaluation."
When the "candidate" actor clicks "Upload documents again"
And the "candidate" actor completes and submits the candidate application
When the "admin" actor visits "/en/backoffice/candidates"
And the "admin" actor opens the current candidate in backoffice
And the "admin" actor sees "Manual Assessment"
And the "admin" actor sets the backoffice field "Status In Home Country" to "Nurse"
And the "admin" actor sets the backoffice field "Status In Germany" to "Assistant Nurse"
And the "admin" actor sets the backoffice field "License Mandatory" to "No"
And the "admin" actor sets the backoffice field "Duration Requirements Met" to "Yes"
And the "admin" actor sets the verification field "Nursing Related Degree" to "Yes"
And the "admin" actor sets the verification field "Accredited University" to "Yes"
And the "admin" actor sets the verification field "Accredited Study Program" to "Yes"
And the "admin" actor sets the verification field "Is Nursing Focus" to "Yes"
And the "admin" actor sets the verification field "Has Theory" to "Yes"
And the "admin" actor sets the verification field "Has Practice" to "Yes"
And the "admin" actor sets the verification field "Duration Hours" to "4800"
Then the "admin" actor sees "Valid"
When the "admin" actor marks the candidate as "Complete"
And the "candidate" actor revisits the current candidate application
Then the "candidate" actor sees "A First Step Towards Your Nursing Career"
And the "candidate" actor sees "You Qualify as a Nursing Assistant in Berlin"
When the "company" actor logs into company
And the "company" actor opens the current candidate in company
Then the "company" actor URL contains "/en/company/candidate/"
And the "company" actor sees the current candidate name
And the "company" actor sees "Philippines"

View File

@@ -0,0 +1,64 @@
@smoke
Feature: Public pages
Public entry points should render without crashing and show their core content.
Scenario: localized home page loads
Given I visit "/en"
Then I see "Begin Your Nursing Career in Germany"
And I see "Check My Qualification"
Scenario: about page loads
Given I visit "/en/about"
Then I see "About HeyGermany"
And I see "Ready to Start Your Journey?"
Scenario: application page loads
Given I visit "/en/jobs/apply"
Then I see "Who is This For?"
And I see "Get Your Results"
Scenario: result route redirects back to the application flow
Given I visit "/en/jobs/result"
Then the URL contains "/en/jobs/apply"
And I see "Who is This For?"
Scenario: pilot landing page loads
Given I visit "/pilot"
Then I see "Pilot-Partner werden"
And I see "Warum Pflegeeinrichtungen HeyGermany wählen"
Scenario: imprint page loads
Given I visit "/en/legal/imprint"
Then I see "Imprint"
And I see "Information according to"
Scenario: privacy page loads
Given I visit "/en/legal/privacy"
Then I see "Privacy Policy"
And I see "Data Controller"
Scenario: terms page loads
Given I visit "/en/legal/terms-and-conditions"
Then I see "Terms & Conditions"
And I see "User Responsibilities"
Scenario: magic link page handles missing token
Given I visit "/en/auth/magic-link"
Then I see "Magic link failed"
And I see "No magic link token provided."
Scenario: verify email success page loads
Given I visit "/en/verify-email?verified=1"
Then I see "Thank you for verifying your email!"
And I see "Your account is now active and ready to use."
Scenario: verify email error page loads
Given I visit "/en/verify-email?error=expired"
Then I see "Email Verification Failed"
And I see "Please try requesting a new verification email or contact support if the problem persists."
Scenario: demo result page loads
Given I visit "/en/jobs/result/demo"
Then I see "Good News Maria Santos"
And I see "You May Qualify as a Nurse in Berlin"
And I see "Get Help"