Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Browser/SignupTest.php
Show First 20 Lines • Show All 299 Lines • ▼ Show 20 Lines | public function testSignupStep3(): void | ||||
$domains = Domain::getPublicDomains(); | $domains = Domain::getPublicDomains(); | ||||
$domains_count = count($domains); | $domains_count = count($domains); | ||||
$step->assertSeeIn('.card-title', 'Sign Up - Step 3/3') | $step->assertSeeIn('.card-title', 'Sign Up - Step 3/3') | ||||
->assertMissing('#signup_last_name') | ->assertMissing('#signup_last_name') | ||||
->assertMissing('#signup_first_name') | ->assertMissing('#signup_first_name') | ||||
->assertVisible('#signup_login') | ->assertVisible('#signup_login') | ||||
->assertVisible('#signup_password') | ->assertVisible('#signup_password') | ||||
->assertVisible('#signup_confirm') | ->assertVisible('#signup_password_confirmation') | ||||
->assertVisible('select#signup_domain') | ->assertVisible('select#signup_domain') | ||||
->assertElementsCount('select#signup_domain option', $domains_count, false) | ->assertElementsCount('select#signup_domain option', $domains_count, false) | ||||
->assertText('select#signup_domain option:nth-child(1)', $domains[0]) | ->assertText('select#signup_domain option:nth-child(1)', $domains[0]) | ||||
->assertValue('select#signup_domain option:nth-child(1)', $domains[0]) | ->assertValue('select#signup_domain option:nth-child(1)', $domains[0]) | ||||
->assertText('select#signup_domain option:nth-child(2)', $domains[1]) | ->assertText('select#signup_domain option:nth-child(2)', $domains[1]) | ||||
->assertValue('select#signup_domain option:nth-child(2)', $domains[1]) | ->assertValue('select#signup_domain option:nth-child(2)', $domains[1]) | ||||
->assertVisible('[type=button]') | ->assertVisible('[type=button]') | ||||
->assertVisible('[type=submit]') | ->assertVisible('[type=submit]') | ||||
->assertSeeIn('[type=submit]', 'Submit') | ->assertSeeIn('[type=submit]', 'Submit') | ||||
->assertFocused('#signup_login') | ->assertFocused('#signup_login') | ||||
->assertSelected('select#signup_domain', \config('app.domain')) | ->assertSelected('select#signup_domain', \config('app.domain')) | ||||
->assertValue('#signup_login', '') | ->assertValue('#signup_login', '') | ||||
->assertValue('#signup_password', '') | ->assertValue('#signup_password', '') | ||||
->assertValue('#signup_confirm', ''); | ->assertValue('#signup_password_confirmation', '') | ||||
->with('#signup_password_policy', function (Browser $browser) { | |||||
$browser->assertElementsCount('li', 2) | |||||
->assertMissing('li:first-child svg.text-success') | |||||
->assertSeeIn('li:first-child small', "Minimum password length: 6 characters") | |||||
->assertMissing('li:last-child svg.text-success') | |||||
->assertSeeIn('li:last-child small', "Maximum password length: 255 characters"); | |||||
}); | |||||
// TODO: Test domain selector | // TODO: Test domain selector | ||||
}); | }); | ||||
// Test Back button | // Test Back button | ||||
$browser->click('@step3 [type=button]'); | $browser->click('@step3 [type=button]'); | ||||
$browser->waitFor('@step2'); | $browser->waitFor('@step2'); | ||||
$browser->assertFocused('@step2 #signup_short_code'); | $browser->assertFocused('@step2 #signup_short_code'); | ||||
Show All 15 Lines | public function testSignupStep3(): void | ||||
$browser->waitFor('@step3'); | $browser->waitFor('@step3'); | ||||
// Submit invalid data | // Submit invalid data | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->assertFocused('#signup_login') | $step->assertFocused('#signup_login') | ||||
->type('#signup_login', '*') | ->type('#signup_login', '*') | ||||
->type('#signup_password', '12345678') | ->type('#signup_password', '12345678') | ||||
->type('#signup_confirm', '123456789') | ->type('#signup_password_confirmation', '123456789') | ||||
->with('#signup_password_policy', function (Browser $browser) { | |||||
$browser->waitFor('li:first-child svg.text-success') | |||||
->waitFor('li:last-child svg.text-success'); | |||||
}) | |||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitFor('#signup_login.is-invalid') | ->waitFor('#signup_login.is-invalid') | ||||
->assertVisible('#signup_domain + .invalid-feedback') | ->assertVisible('#signup_domain + .invalid-feedback') | ||||
->assertVisible('#signup_password.is-invalid') | ->assertVisible('#signup_password.is-invalid') | ||||
->assertVisible('#signup_password + .invalid-feedback') | ->assertVisible('#signup_password_input .invalid-feedback') | ||||
->assertFocused('#signup_login') | ->assertFocused('#signup_login') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ||||
}); | }); | ||||
// Submit invalid data (valid login, invalid password) | // Submit invalid data (valid login, invalid password) | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->type('#signup_login', 'SignupTestDusk') | $step->type('#signup_login', 'SignupTestDusk') | ||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitFor('#signup_password.is-invalid') | ->waitFor('#signup_password.is-invalid') | ||||
->assertVisible('#signup_password + .invalid-feedback') | ->assertVisible('#signup_password_input .invalid-feedback') | ||||
->assertMissing('#signup_login.is-invalid') | ->assertMissing('#signup_login.is-invalid') | ||||
->assertMissing('#signup_domain + .invalid-feedback') | ->assertMissing('#signup_domain + .invalid-feedback') | ||||
->assertFocused('#signup_password') | ->assertFocused('#signup_password') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ||||
}); | }); | ||||
// Submit valid data | // Submit valid data | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->type('#signup_confirm', '12345678'); | $step->type('#signup_password_confirmation', '12345678'); | ||||
$step->click('[type=submit]'); | $step->click('[type=submit]'); | ||||
}); | }); | ||||
// At this point we should be auto-logged-in to dashboard | // At this point we should be auto-logged-in to dashboard | ||||
$browser->waitUntilMissing('@step3') | $browser->waitUntilMissing('@step3') | ||||
->waitUntilMissing('.app-loader') | ->waitUntilMissing('.app-loader') | ||||
->on(new Dashboard()) | ->on(new Dashboard()) | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | public function testSignupGroup(): void | ||||
$step->type('#signup_short_code', $code->short_code) | $step->type('#signup_short_code', $code->short_code) | ||||
->click('[type=submit]'); | ->click('[type=submit]'); | ||||
}); | }); | ||||
// Here we expect 4 text inputs, Back and Continue buttons | // Here we expect 4 text inputs, Back and Continue buttons | ||||
$browser->whenAvailable('@step3', function ($step) { | $browser->whenAvailable('@step3', function ($step) { | ||||
$step->assertVisible('#signup_login') | $step->assertVisible('#signup_login') | ||||
->assertVisible('#signup_password') | ->assertVisible('#signup_password') | ||||
->assertVisible('#signup_confirm') | ->assertVisible('#signup_password_confirmation') | ||||
->assertVisible('input#signup_domain') | ->assertVisible('input#signup_domain') | ||||
->assertVisible('[type=button]') | ->assertVisible('[type=button]') | ||||
->assertVisible('[type=submit]') | ->assertVisible('[type=submit]') | ||||
->assertFocused('#signup_login') | ->assertFocused('#signup_login') | ||||
->assertValue('input#signup_domain', '') | ->assertValue('input#signup_domain', '') | ||||
->assertValue('#signup_login', '') | ->assertValue('#signup_login', '') | ||||
->assertValue('#signup_password', '') | ->assertValue('#signup_password', '') | ||||
->assertValue('#signup_confirm', ''); | ->assertValue('#signup_password_confirmation', ''); | ||||
}); | }); | ||||
// Submit invalid login and password data | // Submit invalid login and password data | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->assertFocused('#signup_login') | $step->assertFocused('#signup_login') | ||||
->type('#signup_login', '*') | ->type('#signup_login', '*') | ||||
->type('#signup_domain', 'test.com') | ->type('#signup_domain', 'test.com') | ||||
->type('#signup_password', '12345678') | ->type('#signup_password', '12345678') | ||||
->type('#signup_confirm', '123456789') | ->type('#signup_password_confirmation', '123456789') | ||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitFor('#signup_login.is-invalid') | ->waitFor('#signup_login.is-invalid') | ||||
->assertVisible('#signup_domain + .invalid-feedback') | ->assertVisible('#signup_domain + .invalid-feedback') | ||||
->assertVisible('#signup_password.is-invalid') | ->assertVisible('#signup_password.is-invalid') | ||||
->assertVisible('#signup_password + .invalid-feedback') | ->assertVisible('#signup_password_input .invalid-feedback') | ||||
->assertFocused('#signup_login') | ->assertFocused('#signup_login') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ||||
}); | }); | ||||
// Submit invalid domain | // Submit invalid domain | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->type('#signup_login', 'admin') | $step->type('#signup_login', 'admin') | ||||
->type('#signup_domain', 'aaa') | ->type('#signup_domain', 'aaa') | ||||
->type('#signup_password', '12345678') | ->type('#signup_password', '12345678') | ||||
->type('#signup_confirm', '12345678') | ->type('#signup_password_confirmation', '12345678') | ||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitUntilMissing('#signup_login.is-invalid') | ->waitUntilMissing('#signup_login.is-invalid') | ||||
->waitFor('#signup_domain.is-invalid + .invalid-feedback') | ->waitFor('#signup_domain.is-invalid + .invalid-feedback') | ||||
->assertMissing('#signup_password.is-invalid') | ->assertMissing('#signup_password.is-invalid') | ||||
->assertMissing('#signup_password + .invalid-feedback') | ->assertMissing('#signup_password_input .invalid-feedback') | ||||
->assertFocused('#signup_domain') | ->assertFocused('#signup_domain') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ||||
}); | }); | ||||
// Submit invalid domain | // Submit invalid domain | ||||
$browser->with('@step3', function ($step) { | $browser->with('@step3', function ($step) { | ||||
$step->type('#signup_domain', 'user-domain-signup.com') | $step->type('#signup_domain', 'user-domain-signup.com') | ||||
->click('[type=submit]'); | ->click('[type=submit]'); | ||||
▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | public function testSignupVoucherLink(): void | ||||
}) | }) | ||||
->whenAvailable('@step3', function (Browser $browser) { | ->whenAvailable('@step3', function (Browser $browser) { | ||||
// Assert that the code is filled in the input | // Assert that the code is filled in the input | ||||
// Change it and test error handling | // Change it and test error handling | ||||
$browser->assertValue('#signup_voucher', 'TEST') | $browser->assertValue('#signup_voucher', 'TEST') | ||||
->type('#signup_voucher', 'TESTXX') | ->type('#signup_voucher', 'TESTXX') | ||||
->type('#signup_login', 'signuptestdusk') | ->type('#signup_login', 'signuptestdusk') | ||||
->type('#signup_password', '123456789') | ->type('#signup_password', '123456789') | ||||
->type('#signup_confirm', '123456789') | ->type('#signup_password_confirmation', '123456789') | ||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitFor('#signup_voucher.is-invalid') | ->waitFor('#signup_voucher.is-invalid') | ||||
->assertVisible('#signup_voucher + .invalid-feedback') | ->assertVisible('#signup_voucher + .invalid-feedback') | ||||
->assertFocused('#signup_voucher') | ->assertFocused('#signup_voucher') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error') | ->assertToast(Toast::TYPE_ERROR, 'Form validation error') | ||||
// Submit the correct code | // Submit the correct code | ||||
->type('#signup_voucher', 'TEST') | ->type('#signup_voucher', 'TEST') | ||||
->click('[type=submit]'); | ->click('[type=submit]'); | ||||
Show All 35 Lines | public function testSignupInvitation(): void | ||||
->with('@step3', function ($step) { | ->with('@step3', function ($step) { | ||||
$domains_count = count(Domain::getPublicDomains()); | $domains_count = count(Domain::getPublicDomains()); | ||||
$step->assertMissing('.card-title') | $step->assertMissing('.card-title') | ||||
->assertVisible('#signup_last_name') | ->assertVisible('#signup_last_name') | ||||
->assertVisible('#signup_first_name') | ->assertVisible('#signup_first_name') | ||||
->assertVisible('#signup_login') | ->assertVisible('#signup_login') | ||||
->assertVisible('#signup_password') | ->assertVisible('#signup_password') | ||||
->assertVisible('#signup_confirm') | ->assertVisible('#signup_password_confirmation') | ||||
->assertVisible('select#signup_domain') | ->assertVisible('select#signup_domain') | ||||
->assertElementsCount('select#signup_domain option', $domains_count, false) | ->assertElementsCount('select#signup_domain option', $domains_count, false) | ||||
->assertVisible('[type=submit]') | ->assertVisible('[type=submit]') | ||||
->assertMissing('[type=button]') // Back button | ->assertMissing('[type=button]') // Back button | ||||
->assertSeeIn('[type=submit]', 'Sign Up') | ->assertSeeIn('[type=submit]', 'Sign Up') | ||||
->assertFocused('#signup_first_name') | ->assertFocused('#signup_first_name') | ||||
->assertValue('select#signup_domain', \config('app.domain')) | ->assertValue('select#signup_domain', \config('app.domain')) | ||||
->assertValue('#signup_first_name', '') | ->assertValue('#signup_first_name', '') | ||||
->assertValue('#signup_last_name', '') | ->assertValue('#signup_last_name', '') | ||||
->assertValue('#signup_login', '') | ->assertValue('#signup_login', '') | ||||
->assertValue('#signup_password', '') | ->assertValue('#signup_password', '') | ||||
->assertValue('#signup_confirm', ''); | ->assertValue('#signup_password_confirmation', ''); | ||||
// Submit invalid data | // Submit invalid data | ||||
$step->type('#signup_login', '*') | $step->type('#signup_login', '*') | ||||
->type('#signup_password', '12345678') | ->type('#signup_password', '12345678') | ||||
->type('#signup_confirm', '123456789') | ->type('#signup_password_confirmation', '123456789') | ||||
->click('[type=submit]') | ->click('[type=submit]') | ||||
->waitFor('#signup_login.is-invalid') | ->waitFor('#signup_login.is-invalid') | ||||
->assertVisible('#signup_domain + .invalid-feedback') | ->assertVisible('#signup_domain + .invalid-feedback') | ||||
->assertVisible('#signup_password.is-invalid') | ->assertVisible('#signup_password.is-invalid') | ||||
->assertVisible('#signup_password + .invalid-feedback') | ->assertVisible('#signup_password_input .invalid-feedback') | ||||
->assertFocused('#signup_login') | ->assertFocused('#signup_login') | ||||
->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ->assertToast(Toast::TYPE_ERROR, 'Form validation error'); | ||||
// Submit valid data | // Submit valid data | ||||
$step->type('#signup_confirm', '12345678') | $step->type('#signup_password_confirmation', '12345678') | ||||
->type('#signup_login', 'signuptestdusk') | ->type('#signup_login', 'signuptestdusk') | ||||
->type('#signup_first_name', 'First') | ->type('#signup_first_name', 'First') | ||||
->type('#signup_last_name', 'Last') | ->type('#signup_last_name', 'Last') | ||||
->click('[type=submit]'); | ->click('[type=submit]'); | ||||
}) | }) | ||||
// At this point we should be auto-logged-in to dashboard | // At this point we should be auto-logged-in to dashboard | ||||
->waitUntilMissing('@step3') | ->waitUntilMissing('@step3') | ||||
->waitUntilMissing('.app-loader') | ->waitUntilMissing('.app-loader') | ||||
Show All 18 Lines |