diff --git a/src/tests/Browser/Meet/RoomQATest.php b/src/tests/Browser/Meet/RoomQATest.php index 66a5ce2e..dbf5c233 100644 --- a/src/tests/Browser/Meet/RoomQATest.php +++ b/src/tests/Browser/Meet/RoomQATest.php @@ -1,139 +1,139 @@ setupTestRoom(); } public function tearDown(): void { $this->resetTestRoom(); parent::tearDown(); } /** * Test Q&A queue * * @group openvidu */ public function testQA(): void { $this->browse(function (Browser $owner, Browser $guest1, Browser $guest2) { // Join the room as an owner (authenticate) $owner->visit(new RoomPage('john')) ->click('@setup-button') ->submitLogon('john@kolab.org', 'simple123') ->waitFor('@setup-form') ->waitUntilMissing('@setup-status-message.loading') ->select('@setup-mic-select', '') ->select('@setup-cam-select', '') ->type('@setup-nickname-input', 'John') ->clickWhenEnabled('@setup-button') ->waitFor('@session'); // In another browser act as a guest (1) $guest1->visit(new RoomPage('john')) ->waitFor('@setup-form') ->waitUntilMissing('@setup-status-message.loading') ->assertMissing('@setup-status-message') ->assertSeeIn('@setup-button', "JOIN") // Join the room, disable cam/mic ->select('@setup-mic-select', '') ->select('@setup-cam-select', '') ->type('@setup-nickname-input', 'Guest1') ->clickWhenEnabled('@setup-button') ->waitFor('@session'); // Assert current UI state $owner->assertToolbarButtonState('hand', RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED) ->waitFor('div.meet-subscriber.self') ->assertMissing('@queue') ->click('@menu button.link-hand') ->waitFor('@queue .dropdown.self.moderated') ->assertSeeIn('@queue .dropdown.self.moderated', 'John') ->assertToolbarButtonState('hand', RoomPage::BUTTON_ACTIVE | RoomPage::BUTTON_ENABLED); // Assert current UI state $guest1->waitFor('@queue .dropdown') ->assertSeeIn('@queue .dropdown', 'John') ->assertElementsCount('@queue .dropdown', 1) ->waitFor('div.meet-subscriber.self') ->click('@menu button.link-hand') ->waitFor('@queue .dropdown.self') ->assertSeeIn('@queue .dropdown.self', 'Guest1') ->assertElementsCount('@queue .dropdown', 2) ->click('@menu button.link-hand') ->waitUntilMissing('@queue .dropdown.self') ->assertElementsCount('@queue .dropdown', 1) ->assertToolbarButtonState('hand', RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED); // In another browser act as a guest (2) $guest2->visit(new RoomPage('john')) ->waitFor('@setup-form') ->waitUntilMissing('@setup-status-message.loading') ->assertMissing('@setup-status-message') ->assertSeeIn('@setup-button', "JOIN") ->type('@setup-nickname-input', 'Guest2') ->clickWhenEnabled('@setup-button') ->waitFor('@queue .dropdown') - ->assertSeeIn('@queue .dropdown', 'John') + ->waitForTextIn('@queue .dropdown', 'John') ->assertElementsCount('@queue .dropdown', 1) ->assertMissing('@menu button.link-hand'); // Demote the guest (2) to subscriber, assert Hand button in toolbar $owner->click('@session div.meet-video .meet-nickname') ->whenAvailable('@session div.meet-video .dropdown-menu', function ($browser) { $browser->click('.action-role-publisher input'); }); // Guest (2) rises his hand $guest2->waitUntilMissing('@session .meet-video') ->waitFor('@menu button.link-hand') ->assertToolbarButtonState('hand', RoomPage::BUTTON_INACTIVE | RoomPage::BUTTON_ENABLED) ->click('@menu button.link-hand') ->waitFor('@queue .dropdown.self') ->assertElementsCount('@queue .dropdown', 2); // Promote guest (2) to publisher $owner->waitFor('@queue .dropdown:not(.self)') ->pause(8000) // wait until it's not moving, otherwise click() will be possible ->click('@queue .dropdown:not(.self)') ->whenAvailable('@queue .dropdown:not(.self) .dropdown-menu', function ($browser) { $browser->click('.action-role-publisher input'); }) ->waitUntilMissing('@queue .dropdown:not(.self)') ->waitFor('@session .meet-video'); $guest1->waitFor('@session .meet-video') ->assertElementsCount('@queue .dropdown', 1); $guest2->waitFor('@session .meet-video') ->waitUntilMissing('@queue .dropdown.self') ->assertElementsCount('@queue .dropdown', 1); // Finally, do the same with the owner (last in the queue) $owner->click('@queue .dropdown.self') ->whenAvailable('@queue .dropdown.self .dropdown-menu', function ($browser) { $browser->click('.action-role-publisher input'); }) ->waitUntilMissing('@queue') ->waitFor('@session .meet-video.self'); $guest1->waitUntilMissing('@queue'); $guest2->waitUntilMissing('@queue'); }); } } diff --git a/src/tests/Browser/SupportTest.php b/src/tests/Browser/SupportTest.php index e9e7651b..ff92cdd4 100644 --- a/src/tests/Browser/SupportTest.php +++ b/src/tests/Browser/SupportTest.php @@ -1,56 +1,56 @@ browse(function (Browser $browser) { $browser->visit('/') ->within(new Menu(), function ($browser) { $browser->clickMenuItem('support'); }) ->waitFor('#support') ->assertSeeIn('.card-title', 'Contact Support') - ->assertSeeIn('a.btn-info', 'Contact Support') - ->click('a.btn-info') + ->assertSeeIn('a.btn-primary', 'Contact Support') + ->click('a.btn-primary') ->with(new Dialog('#support-dialog'), function (Browser $browser) { $browser->assertSeeIn('@title', 'Contact Support') ->assertFocused('#support-user') ->assertSeeIn('@button-cancel', 'Cancel') ->assertSeeIn('@button-action', 'Submit') ->assertVisible('#support-name') ->assertVisible('#support-email') ->assertVisible('#support-summary') ->assertVisible('#support-body') ->type('#support-email', 'email@address.com') ->type('#support-summary', 'Summary') ->type('#support-body', 'Body') ->click('@button-cancel'); }) ->assertMissing('#support-dialog') - ->click('a.btn-info') + ->click('a.btn-primary') ->with(new Dialog('#support-dialog'), function (Browser $browser) { $browser->assertSeeIn('@title', 'Contact Support') ->assertFocused('#support-user') ->assertValue('#support-email', 'email@address.com') ->assertValue('#support-summary', 'Summary') ->assertValue('#support-body', 'Body') ->click('@button-action'); }) // Note: This line assumes SUPPORT_EMAIL is not set in config ->assertToast(Toast::TYPE_ERROR, 'Failed to submit the support request') ->assertVisible('#support-dialog'); }); } }