Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Browser/Meet/RoomOptionsTest.php
Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | public function testRoomPassword(): void | ||||
->waitUntilMissing('@setup-status-message.loading') | ->waitUntilMissing('@setup-status-message.loading') | ||||
->assertMissing('@setup-password-input') | ->assertMissing('@setup-password-input') | ||||
->clickWhenEnabled('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session') | ->waitFor('@session') | ||||
// Enter room option dialog | // Enter room option dialog | ||||
->click('@menu button.link-options') | ->click('@menu button.link-options') | ||||
->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ||||
$browser->assertSeeIn('@title', 'Room options') | $browser->assertSeeIn('@title', 'Room options') | ||||
->assertSeeIn('@button-action', 'Close') | ->assertSeeIn('@button-cancel', 'Close') | ||||
->assertElementsCount('.modal-footer button', 1) | ->assertElementsCount('.modal-footer button', 1) | ||||
->assertSeeIn('#password-input .label', 'Password:') | ->assertSeeIn('#password-input .label', 'Password:') | ||||
->assertSeeIn('#password-input-text.text-muted', 'none') | ->assertSeeIn('#password-input-text.text-muted', 'none') | ||||
->assertVisible('#password-input + small') | ->assertVisible('#password-input + small') | ||||
->assertSeeIn('#password-set-btn', 'Set password') | ->assertSeeIn('#password-set-btn', 'Set password') | ||||
->assertElementsCount('#password-input button', 1) | ->assertElementsCount('#password-input button', 1) | ||||
->assertMissing('#password-input input') | ->assertMissing('#password-input input') | ||||
// Test setting a password | // Test setting a password | ||||
->click('#password-set-btn') | ->click('#password-set-btn') | ||||
->assertMissing('#password-input-text') | ->assertMissing('#password-input-text') | ||||
->assertVisible('#password-input input') | ->assertVisible('#password-input input') | ||||
->assertValue('#password-input input', '') | ->assertValue('#password-input input', '') | ||||
->assertSeeIn('#password-input #password-save-btn', 'Save') | ->assertSeeIn('#password-input #password-save-btn', 'Save') | ||||
->assertElementsCount('#password-input button', 1) | ->assertElementsCount('#password-input button', 1) | ||||
->type('#password-input input', 'pass') | ->type('#password-input input', 'pass') | ||||
->click('#password-input #password-save-btn') | ->click('#password-input #password-save-btn') | ||||
->assertToast(Toast::TYPE_SUCCESS, 'Room configuration updated successfully.') | ->assertToast(Toast::TYPE_SUCCESS, 'Room configuration updated successfully.') | ||||
->assertMissing('#password-input input') | ->assertMissing('#password-input input') | ||||
->assertSeeIn('#password-input-text:not(.text-muted)', 'pass') | ->assertSeeIn('#password-input-text:not(.text-muted)', 'pass') | ||||
->assertSeeIn('#password-clear-btn.btn-outline-danger', 'Clear password') | ->assertSeeIn('#password-clear-btn.btn-outline-danger', 'Clear password') | ||||
->assertElementsCount('#password-input button', 1) | ->assertElementsCount('#password-input button', 1) | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame('pass', $room->fresh()->getSetting('password')); | $this->assertSame('pass', $room->fresh()->getSetting('password')); | ||||
}); | }); | ||||
// In another browser act as a guest, expect password required | // In another browser act as a guest, expect password required | ||||
$guest->visit(new RoomPage('john')) | $guest->visit(new RoomPage('john')) | ||||
->waitFor('@setup-form') | ->waitFor('@setup-form') | ||||
->waitUntilMissing('@setup-status-message.loading') | ->waitUntilMissing('@setup-status-message.loading') | ||||
Show All 19 Lines | public function testRoomPassword(): void | ||||
->assertSeeIn('#password-clear-btn.btn-outline-danger', 'Clear password') | ->assertSeeIn('#password-clear-btn.btn-outline-danger', 'Clear password') | ||||
->assertElementsCount('#password-input button', 1) | ->assertElementsCount('#password-input button', 1) | ||||
->click('#password-clear-btn') | ->click('#password-clear-btn') | ||||
->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ||||
->assertMissing('#password-input input') | ->assertMissing('#password-input input') | ||||
->assertSeeIn('#password-input-text.text-muted', 'none') | ->assertSeeIn('#password-input-text.text-muted', 'none') | ||||
->assertSeeIn('#password-set-btn', 'Set password') | ->assertSeeIn('#password-set-btn', 'Set password') | ||||
->assertElementsCount('#password-input button', 1) | ->assertElementsCount('#password-input button', 1) | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame(null, $room->fresh()->getSetting('password')); | $this->assertSame(null, $room->fresh()->getSetting('password')); | ||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
* Test locked room (denying the join request) | * Test locked room (denying the join request) | ||||
Show All 19 Lines | public function testLockedRoomDeny(): void | ||||
->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ||||
$browser->assertSeeIn('@title', 'Room options') | $browser->assertSeeIn('@title', 'Room options') | ||||
->assertSeeIn('#room-lock label', 'Locked room:') | ->assertSeeIn('#room-lock label', 'Locked room:') | ||||
->assertVisible('#room-lock input[type=checkbox]:not(:checked)') | ->assertVisible('#room-lock input[type=checkbox]:not(:checked)') | ||||
->assertVisible('#room-lock + small') | ->assertVisible('#room-lock + small') | ||||
// Test setting the lock | // Test setting the lock | ||||
->click('#room-lock input') | ->click('#room-lock input') | ||||
->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame('true', $room->fresh()->getSetting('locked')); | $this->assertSame('true', $room->fresh()->getSetting('locked')); | ||||
}); | }); | ||||
// In another browser act as a guest | // In another browser act as a guest | ||||
$guest->visit(new RoomPage('john')) | $guest->visit(new RoomPage('john')) | ||||
->waitFor('@setup-form') | ->waitFor('@setup-form') | ||||
->waitUntilMissing('@setup-status-message.loading') | ->waitUntilMissing('@setup-status-message.loading') | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | public function testLockedRoomAcceptAndDismiss(): void | ||||
->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ||||
$browser->assertSeeIn('@title', 'Room options') | $browser->assertSeeIn('@title', 'Room options') | ||||
->assertSeeIn('#room-lock label', 'Locked room:') | ->assertSeeIn('#room-lock label', 'Locked room:') | ||||
->assertVisible('#room-lock input[type=checkbox]:not(:checked)') | ->assertVisible('#room-lock input[type=checkbox]:not(:checked)') | ||||
->assertVisible('#room-lock + small') | ->assertVisible('#room-lock + small') | ||||
// Test setting the lock | // Test setting the lock | ||||
->click('#room-lock input') | ->click('#room-lock input') | ||||
->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame('true', $room->fresh()->getSetting('locked')); | $this->assertSame('true', $room->fresh()->getSetting('locked')); | ||||
}); | }); | ||||
// In another browser act as a guest | // In another browser act as a guest | ||||
$guest->visit(new RoomPage('john')) | $guest->visit(new RoomPage('john')) | ||||
->waitFor('@setup-form') | ->waitFor('@setup-form') | ||||
->waitUntilMissing('@setup-status-message.loading') | ->waitUntilMissing('@setup-status-message.loading') | ||||
Show All 26 Lines | public function testLockedRoomAcceptAndDismiss(): void | ||||
->click('@session .meet-video:not(.self) .dropdown-menu > .action-dismiss') | ->click('@session .meet-video:not(.self) .dropdown-menu > .action-dismiss') | ||||
->waitUntilMissing('.dropdown-menu') | ->waitUntilMissing('.dropdown-menu') | ||||
->waitUntilMissing('@session .meet-video:not(.self)'); | ->waitUntilMissing('@session .meet-video:not(.self)'); | ||||
// Expect a "end of session" dialog on the participant side | // Expect a "end of session" dialog on the participant side | ||||
$guest->with(new Dialog('#leave-dialog'), function (Browser $browser) { | $guest->with(new Dialog('#leave-dialog'), function (Browser $browser) { | ||||
$browser->assertSeeIn('@title', 'Room closed') | $browser->assertSeeIn('@title', 'Room closed') | ||||
->assertSeeIn('@body', "The session has been closed by the room owner.") | ->assertSeeIn('@body', "The session has been closed by the room owner.") | ||||
->assertMissing('@button-cancel') | ->assertMissing('@button-action') | ||||
->assertSeeIn('@button-action', 'Close'); | ->assertSeeIn('@button-cancel', 'Close'); | ||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
* Test nomedia (subscribers only) feature | * Test nomedia (subscribers only) feature | ||||
* | * | ||||
* @group meet | * @group meet | ||||
Show All 17 Lines | public function testSubscribersOnly(): void | ||||
->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ||||
$browser->assertSeeIn('@title', 'Room options') | $browser->assertSeeIn('@title', 'Room options') | ||||
->assertSeeIn('#room-nomedia label', 'Subscribers only:') | ->assertSeeIn('#room-nomedia label', 'Subscribers only:') | ||||
->assertVisible('#room-nomedia input[type=checkbox]:not(:checked)') | ->assertVisible('#room-nomedia input[type=checkbox]:not(:checked)') | ||||
->assertVisible('#room-nomedia + small') | ->assertVisible('#room-nomedia + small') | ||||
// Test enabling the option | // Test enabling the option | ||||
->click('#room-nomedia input') | ->click('#room-nomedia input') | ||||
->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame('true', $room->fresh()->getSetting('nomedia')); | $this->assertSame('true', $room->fresh()->getSetting('nomedia')); | ||||
}); | }); | ||||
// In another browser act as a guest | // In another browser act as a guest | ||||
$guest->visit(new RoomPage('john')) | $guest->visit(new RoomPage('john')) | ||||
->waitFor('@setup-form') | ->waitFor('@setup-form') | ||||
->waitUntilMissing('@setup-status-message.loading') | ->waitUntilMissing('@setup-status-message.loading') | ||||
->type('@setup-nickname-input', 'John') | ->type('@setup-nickname-input', 'John') | ||||
->clickWhenEnabled('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
// expect the owner to have a video, but the guest to have none | // expect the owner to have a video, but the guest to have none | ||||
->waitFor('@session .meet-video') | ->waitFor('@session .meet-video') | ||||
->waitFor('@session .meet-subscriber.self'); | ->waitFor('@session .meet-subscriber.self'); | ||||
// Unset the option back | // Unset the option back | ||||
$owner->click('@menu button.link-options') | $owner->click('@menu button.link-options') | ||||
->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ->with(new Dialog('#room-options-dialog'), function (Browser $browser) use ($room) { | ||||
$browser->assertVisible('#room-nomedia input[type=checkbox]:checked') | $browser->assertVisible('#room-nomedia input[type=checkbox]:checked') | ||||
// Test enabling the option | // Test enabling the option | ||||
->click('#room-nomedia input') | ->click('#room-nomedia input') | ||||
->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ->assertToast(Toast::TYPE_SUCCESS, "Room configuration updated successfully.") | ||||
->click('@button-action'); | ->click('@button-cancel'); | ||||
$this->assertSame(null, $room->fresh()->getSetting('nomedia')); | $this->assertSame(null, $room->fresh()->getSetting('nomedia')); | ||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
} | } |