BR

browserstack-tester

Runs Selenium-based PHPUnit tests against MikoPBX using cloud browsers in BrowserStack.

Install

mkdir -p .claude/skills/browserstack-tester && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7782" && unzip -o skill.zip -d .claude/skills/browserstack-tester && rm skill.zip

Installs to .claude/skills/browserstack-tester

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Тестирование веб-интерфейса MikoPBX через BrowserStack. Запуск PHPUnit тестов с Selenium WebDriver в облачных браузерах. Использовать для автоматизированного тестирования админ-панели, проверки форм, навигации и интерактивных элементов.
236 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Execute PHPUnit tests via Selenium
  • Automate admin panel UI testing
  • Verify form submission and navigation
  • Run targeted individual test methods
  • View test recordings in BrowserStack

How it works

Uses Selenium WebDriver to drive cloud browsers that connect to the local MikoPBX instance via a secure tunnel.

Inputs & outputs

You give it
PHPUnit test class or method
You get back
BrowserStack test execution results

When to use browserstack-tester

  • Running UI regression tests
  • Verifying admin panel functionality
  • Validating form submission logic
  • Testing navigation flows in cloud browsers

About this skill

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

VariableDescriptionDefault
SERVER_PBXPBX server URLhttps://172.16.33.72
BROWSERSTACK_DAEMON_STARTEDSkip local tunnel starttrue
BROWSERSTACK_LOCAL_IDENTIFIERTunnel identifierlocal_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 menu
  • changeTabOnCurrentPage($tabId) - Switch tabs
  • waitForAjax() - Wait for AJAX requests to complete

Form Interactions

  • changeInputField($name, $value) - Set input field value
  • selectDropdownItem($id, $value) - Select dropdown option
  • changeCheckBoxState($name, $checked) - Toggle checkbox
  • submitForm($formId) - Submit form

Assertions

  • assertInputFieldValueEqual($name, $expected) - Check input value
  • assertCheckBoxStageIsEqual($name, $expected) - Check checkbox state
  • assertMenuItemSelected($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

When not to use it

  • Without a running BrowserStack Local tunnel
  • For non-web interface testing

Prerequisites

BrowserStack Local tunnelMikoPBX test environment

Limitations

  • Requires active local tunnel
  • Limited to MikoPBX admin panel UI

How it compares

It enables cloud-based cross-browser testing for a local PBX instance that is otherwise inaccessible to external services.

Compared to similar skills

browserstack-tester side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
browserstack-tester (this skill)17moReviewIntermediate
wp-testing-core69moReviewIntermediate
livewire-development256moNo flagsIntermediate
woocommerce-backend-dev73moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

sqlite-inspector

mikopbx

Проверка консистентности данных в SQLite баз данных MikoPBX после операций REST API. Использовать при валидации результатов API, отладке проблем с данными, проверке связей внешних ключей или инспектировании CDR записей для тестирования.

568

log-analyzer

mikopbx

Анализ логов Docker контейнера для диагностики проблем и мониторинга здоровья системы. Использовать при отладке ошибок, отслеживании процессов воркеров, исследовании проблем API или мониторинге поведения системы после тестов.

213

openapi-analyzer

mikopbx

Извлечение и анализ OpenAPI 3.1.0 спецификации из MikoPBX для валидации эндпоинтов. Использовать при проверке соответствия API, генерации тестов, проверке схем эндпоинтов или интеграции с навыками endpoint-validator и api-test-generator.

25

api-test-generator

mikopbx

Генерация полных Python pytest тестов для REST API эндпоинтов с валидацией схемы. Использовать при создании тестов для новых эндпоинтов, добавлении покрытия для CRUD операций или валидации соответствия API с OpenAPI схемами.

16

asterisk-tester

mikopbx

Тестирование сценариев Asterisk dialplan и потоков звонков используя безопасные Local каналы. Использовать при тестировании логики маршрутизации звонков, отладке проблем dialplan или проверке потоков IVR меню.

11

asterisk-validator

mikopbx

Валидация конфигурационных файлов Asterisk и анализ логов на корректность и best practices. Использовать при отладке проблем запуска Asterisk, проверке изменений конфигурации или проверке ошибок после регенерации воркерами.

13

Search skills

Search the agent skills registry