Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Browser/Meet/RoomControlsTest.php
Show First 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | public function testNicknameAndMuting(): void | ||||
$this->browse(function (Browser $owner, Browser $guest) { | $this->browse(function (Browser $owner, Browser $guest) { | ||||
// Join the room as an owner (authenticate) | // Join the room as an owner (authenticate) | ||||
$owner->visit(new RoomPage('john')) | $owner->visit(new RoomPage('john')) | ||||
->click('@setup-button') | ->click('@setup-button') | ||||
->submitLogon('john@kolab.org', 'simple123') | ->submitLogon('john@kolab.org', 'simple123') | ||||
->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') | ||||
->click('@setup-button') | ->keys('@setup-nickname-input', '{enter}') // Test form submit with Enter key | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// 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') | ||||
->assertMissing('@setup-status-message') | ->assertMissing('@setup-status-message') | ||||
->assertSeeIn('@setup-button', "JOIN") | ->assertSeeIn('@setup-button', "JOIN") | ||||
// Join the room, disable cam/mic | // Join the room, disable cam/mic | ||||
->select('@setup-mic-select', '') | ->select('@setup-mic-select', '') | ||||
//->select('@setup-cam-select', '') | //->select('@setup-cam-select', '') | ||||
->click('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// Assert current UI state | // Assert current UI state | ||||
$owner->assertToolbar([ | $owner->assertToolbar([ | ||||
'audio' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'audio' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'video' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'video' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'screen' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | 'screen' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'chat' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | 'chat' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'fullscreen' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'fullscreen' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'security' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'security' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'logout' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'logout' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
]) | ]) | ||||
->whenAvailable('div.meet-video.self', function (Browser $browser) { | ->whenAvailable('div.meet-video.self', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertAudioMuted('video', true) | ->assertAudioMuted('video', true) | ||||
->assertSeeIn('.meet-nickname', 'john') | ->assertSeeIn('.meet-nickname', 'john') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertMissing('.controls button.link-audio') | ->assertMissing('.controls button.link-audio') | ||||
->assertMissing('.status .status-audio') | ->assertMissing('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertVisible('.meet-nickname') | ->assertVisible('.meet-nickname') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertVisible('.controls button.link-audio') | ->assertVisible('.controls button.link-audio') | ||||
->assertVisible('.status .status-audio') | ->assertVisible('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->assertElementsCount('@session div.meet-video', 2); | ->assertElementsCount('@session div.meet-video', 2); | ||||
// Assert current UI state | // Assert current UI state | ||||
$guest->assertToolbar([ | $guest->assertToolbar([ | ||||
'audio' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | 'audio' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'video' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'video' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'screen' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | 'screen' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'chat' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | 'chat' => RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'fullscreen' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'fullscreen' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
'logout' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | 'logout' => RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED, | ||||
]) | ]) | ||||
->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertSeeIn('.meet-nickname', 'john') | ->assertSeeIn('.meet-nickname', 'john') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertVisible('.controls button.link-audio') | ->assertVisible('.controls button.link-audio') | ||||
->assertMissing('.status .status-audio') | ->assertMissing('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->whenAvailable('div.meet-video.self', function (Browser $browser) { | ->whenAvailable('div.meet-video.self', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertMissing('.controls button.link-audio') | ->assertMissing('.controls button.link-audio') | ||||
->assertVisible('.status .status-audio') | ->assertVisible('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->assertElementsCount('@session div.meet-video', 2); | ->assertElementsCount('@session div.meet-video', 2); | ||||
// Test nickname change propagation | // Test nickname change propagation | ||||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | public function testChat(): void | ||||
$this->assignBetaEntitlement('john@kolab.org', 'meet'); | $this->assignBetaEntitlement('john@kolab.org', 'meet'); | ||||
$this->browse(function (Browser $owner, Browser $guest) { | $this->browse(function (Browser $owner, Browser $guest) { | ||||
// Join the room as an owner | // Join the room as an owner | ||||
$owner->visit(new RoomPage('john')) | $owner->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') | ||||
->click('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// 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') | ||||
->assertMissing('@setup-status-message') | ->assertMissing('@setup-status-message') | ||||
->assertSeeIn('@setup-button', "JOIN") | ->assertSeeIn('@setup-button', "JOIN") | ||||
// Join the room, disable cam/mic | // Join the room, disable cam/mic | ||||
->select('@setup-mic-select', '') | ->select('@setup-mic-select', '') | ||||
// ->select('@setup-cam-select', '') | // ->select('@setup-cam-select', '') | ||||
->click('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// Test chat elements | // Test chat elements | ||||
$owner->click('@menu button.link-chat') | $owner->click('@menu button.link-chat') | ||||
->assertToolbarButtonState('chat', RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED) | ->assertToolbarButtonState('chat', RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED) | ||||
->assertVisible('@chat') | ->assertVisible('@chat') | ||||
->assertVisible('@session') | ->assertVisible('@session') | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | public function testShareScreen(): void | ||||
$this->assignBetaEntitlement('john@kolab.org', 'meet'); | $this->assignBetaEntitlement('john@kolab.org', 'meet'); | ||||
$this->browse(function (Browser $owner, Browser $guest) { | $this->browse(function (Browser $owner, Browser $guest) { | ||||
// Join the room as an owner | // Join the room as an owner | ||||
$owner->visit(new RoomPage('john')) | $owner->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') | ||||
->click('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// 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') | ||||
// Join the room, disable cam/mic | // Join the room, disable cam/mic | ||||
->select('@setup-mic-select', '') | ->select('@setup-mic-select', '') | ||||
->select('@setup-cam-select', '') | ->select('@setup-cam-select', '') | ||||
->click('@setup-button') | ->clickWhenEnabled('@setup-button') | ||||
->waitFor('@session'); | ->waitFor('@session'); | ||||
// Test screen sharing | // Test screen sharing | ||||
$owner->assertToolbarButtonState('screen', RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED) | $owner->assertToolbarButtonState('screen', RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED) | ||||
->assertElementsCount('@session div.meet-video', 1) | ->assertElementsCount('@session div.meet-video', 1) | ||||
->click('@menu button.link-screen') | ->click('@menu button.link-screen') | ||||
->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ->whenAvailable('div.meet-video:not(.self)', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertSeeIn('.meet-nickname', 'john') | ->assertSeeIn('.meet-nickname', 'john') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertVisible('.controls button.link-audio') | ->assertVisible('.controls button.link-audio') | ||||
->assertVisible('.status .status-audio') | ->assertVisible('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->assertElementsCount('@session div.meet-video', 2) | ->assertElementsCount('@session div.meet-video', 2) | ||||
->assertElementsCount('@subscribers .meet-subscriber', 1) | ->assertElementsCount('@subscribers .meet-subscriber', 1) | ||||
->assertToolbarButtonState('screen', RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED); | ->assertToolbarButtonState('screen', RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED); | ||||
$guest | $guest | ||||
->whenAvailable('div.meet-video:nth-child(3)', function (Browser $browser) { | ->whenAvailable('div.meet-video:nth-child(3)', function (Browser $browser) { | ||||
$browser->assertVisible('video') | $browser->waitFor('video') | ||||
->assertSeeIn('.meet-nickname', 'john') | ->assertSeeIn('.meet-nickname', 'john') | ||||
->assertVisible('.controls button.link-fullscreen') | ->assertVisible('.controls button.link-fullscreen') | ||||
->assertVisible('.controls button.link-audio') | ->assertVisible('.controls button.link-audio') | ||||
->assertVisible('.status .status-audio') | ->assertVisible('.status .status-audio') | ||||
->assertMissing('.status .status-video'); | ->assertMissing('.status .status-video'); | ||||
}) | }) | ||||
->assertElementsCount('@session div.meet-video', 2) | ->assertElementsCount('@session div.meet-video', 2) | ||||
->assertElementsCount('@subscribers .meet-subscriber', 1); | ->assertElementsCount('@subscribers .meet-subscriber', 1); | ||||
}); | }); | ||||
} | } | ||||
} | } |