Тестирование веб-интерфейса MikoPBX через BrowserStack. Запуск PHPUnit тестов с Selenium WebDriver в облачных браузерах. Использовать для автоматизированного тестирования админ-панели, проверки форм, навигации и интерактивных элементов.
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: browserstack-tester description: Тестирование веб-интерфейса MikoPBX через BrowserStack. Запуск PHPUnit тестов с Selenium WebDriver в облачных браузерах. Использовать для автоматизированного тестирования админ-панели, проверки форм, навигации и интерактивных элементов. allowed-tools: Bash, Read, Write, Edit, Glob, Grep
BrowserStack Web UI Tester
Тестирование веб-интерфейса MikoPBX через BrowserStack. Запуск PHPUnit тестов с Selenium WebDriver в облачных браузерах. Использовать для автоматизированного тестирования админ-панели, проверки форм, навигации и интерактивных элементов.
Prerequisites
BrowserStack Local must be running on the host machine:
# In a separate terminal on macOS host:
cd ~/PhpstormProjects/mikopbx/Core/tests/AdminCabinet
./start-browserstack-local.sh
This creates a secure tunnel between BrowserStack cloud browsers and local PBX server.
Running Tests
Basic Test Execution
# Run specific test file
docker exec -t mikopbx_tests-refactoring /bin/sh -c "
cd /offload/rootfs/usr/www &&
SERVER_PBX=https://172.16.33.72 \
BROWSERSTACK_DAEMON_STARTED=true \
BROWSERSTACK_LOCAL_IDENTIFIER=local_test \
php vendor/bin/phpunit \
--configuration tests/Unit/phpunit.xml \
tests/AdminCabinet/Tests/YourTest.php"
Run Specific Test Method
docker exec -t mikopbx_tests-refactoring /bin/sh -c "
cd /offload/rootfs/usr/www &&
SERVER_PBX=https://172.16.33.72 \
BROWSERSTACK_DAEMON_STARTED=true \
BROWSERSTACK_LOCAL_IDENTIFIER=local_test \
php vendor/bin/phpunit \
--configuration tests/Unit/phpunit.xml \
tests/AdminCabinet/Tests/NetworkInterfacesTest.php \
--filter testAddNewVLAN"
Run Multiple Tests
# Use pipe (|) to run multiple test methods
--filter 'testAddNewVLAN|testStaticRoutes|testIPv6ManualConfiguration'
Environment Variables
| Variable | Description | Default |
|---|---|---|
SERVER_PBX | PBX server URL | https://172.16.33.72 |
BROWSERSTACK_DAEMON_STARTED | Skip local tunnel start | true |
BROWSERSTACK_LOCAL_IDENTIFIER | Tunnel identifier | local_test |
Test Structure
All tests extend MikoPBXTestsBase:
class MyFeatureTest extends MikoPBXTestsBase
{
public function setUp(): void
{
parent::setUp();
$this->setSessionName("Test: My Feature Name");
}
public function testMyFeature(): void
{
// Navigate to page
$this->clickSidebarMenuItemByHref("/admin-cabinet/my-feature/modify/");
$this->waitForAjax();
// Interact with form
$this->changeInputField('fieldName', 'value');
$this->selectDropdownItem('dropdown-id', 'option-value');
$this->changeCheckBoxState('checkbox-name', true);
// Submit and verify
$this->submitForm('form-id');
$this->assertInputFieldValueEqual('fieldName', 'value');
}
}
Key Helper Methods
Navigation
clickSidebarMenuItemByHref($href)- Navigate via sidebar menuchangeTabOnCurrentPage($tabId)- Switch tabswaitForAjax()- Wait for AJAX requests to complete
Form Interactions
changeInputField($name, $value)- Set input field valueselectDropdownItem($id, $value)- Select dropdown optionchangeCheckBoxState($name, $checked)- Toggle checkboxsubmitForm($formId)- Submit form
Assertions
assertInputFieldValueEqual($name, $expected)- Check input valueassertCheckBoxStageIsEqual($name, $expected)- Check checkbox stateassertMenuItemSelected($id, $value)- Check dropdown selection
Test Files Location
- Test classes:
tests/AdminCabinet/Tests/ - Base class:
tests/AdminCabinet/Lib/MikoPBXTestsBase.php - PHPUnit config:
tests/Unit/phpunit.xml - Test data factories:
tests/AdminCabinet/Tests/Data/
BrowserStack Dashboard
View test recordings and logs at: https://automate.browserstack.com/dashboard/
Common Patterns
Wait for Element
self::$driver->wait(10, 500)->until(
WebDriverExpectedCondition::visibilityOfElementLocated(
WebDriverBy::id('element-id')
)
);
Find Element by XPath
$element = self::$driver->findElement(
WebDriverBy::xpath("//div[contains(@class, 'my-class')]")
);
CSS Selector
$rows = self::$driver->findElements(
WebDriverBy::cssSelector('#my-table tbody tr:not(.template)')
);
References
- Test Patterns - Common testing patterns
- Troubleshooting - Common issues and solutions
More by mikopbx
View allМониторинг CI/CD пайплайна MikoPBX в TeamCity. Получение статусов сборок, анализ упавших тестов, доступ к логам и артефактам. Использовать после push в git или при анализе проблем сборки.
Управление переводами REST API ключей (rest_*) для MikoPBX. Автоматически находит отсутствующие русские ключи в RestApi.php и синхронизирует их с исходным кодом. Использовать при проверке переводов API, после добавления новых endpoints или перед релизом.
Тестирование сценариев Asterisk dialplan и потоков звонков используя безопасные Local каналы. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню.
Анализ логов Docker контейнера для диагностики проблем и мониторинга здоровья системы. Использовать при отладке ошибок, отслеживании процессов воркеров, исследовании проблем API или мониторинге поведения системы после тестов.
