Конфигурация для тестов CI для Android-приложения с использованием Saucelabs и Appium

Я пытаюсь получить свое приложение для Android, которое я создаю, с помощью плагина maven для Android, чтобы автоматически запускать мои интеграционные тесты на Saucelabs с Appium. Все, что я пробовал до сих пор, дало мне только ошибку «Не удалось загрузить мобильное приложение: c: \ workspace \ android \ android-it .. \ android-app \ target \ android-app.apk»

Я используюauceconnect в моем pom-файле интеграционного теста со следующей конфигурацией:

<plugins>
         <plugin>
        <groupId>com.saucelabs.maven.plugin</groupId>
        <artifactId>sauce-connect-plugin</artifactId>
        <version>1.0.15</version>
        <configuration>
            <sauceUsername>MY USERNAME</sauceUsername>
            <sauceAccessKey>MY KEY</sauceAccessKey>
        </configuration>
        <executions>
            <!-- Start Sauce Connect prior to running the integration tests -->
            <execution>
                <id>start-sauceconnct</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>start-sauceconnect</goal>
                </goals>
            </execution>
            <!-- Stop the Sauce Connect process after the integration tests have finished -->
            <execution>
                <id>stop-sauceconnect</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>stop-sauceconnect</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

Моя конфигурация для моего теста appium выполнена в моем методе настройки и выглядит следующим образом:

@Before
public void setUp() throws Exception {
    File classpathRoot = new File(System.getProperty("user.dir"));
    File app = new File(classpathRoot, "../android-app/target/android-app.apk");
    logger.info("PATH");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("appium-version", "1.0");
    capabilities.setCapability("apk", "sauce-storage:my_app.apk");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "4.2");
    capabilities.setCapability("deviceName", "Android Emulator");
    capabilities.setCapability("deviceType", "phone");
    capabilities.setCapability("device","Android");
    capabilities.setCapability("app", app.getAbsolutePath());
    capabilities.setCapability("app-package", "com.android-app");
    capabilities.setCapability("app-activity", ".MainActivity");
    capabilities.setCapability("takesScreenshot", true);
    driver = new RemoteWebDriver(
            new URL("http://user:[email protected]:80/wd/hub"),
            capabilities);
//        driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}

Согласно всему, что я читал о Saucelabs и Appium, это должно позволить моему apk правильно загружаться и запускаться при запуске сборки maven, однако, как указано выше, похоже, что это не так. Если кто-нибудь может дать мне указатели на то, что мне не хватает, я был бы очень признателен.


person David E    schedule 17.05.2014    source источник


Ответы (1)


Вы пытаетесь запустить сеанс Sauce с локальным путем к приложению; Поскольку этот путь недоступен для Sauce, он не может загрузить с него APK.

Я предполагаю, что либо вы вручную загружаете ваше приложение или ваша конфигурация Maven делает это перед каждой сборкой. (Бонусный совет: убедитесь, что вы передали параметр overwrite, и это правда!)

Если вы установите для возможности «приложение» значение, которое вы используете для возможности «apk», справочник по хранилищу соуса, ваши тесты должны иметь возможность загружать ваше приложение. В качестве стороны, я не уверен, откуда взялась возможность «apk», которую использует ваш тест; Где в документации Sauce Labs / Appium есть ссылки на него?

Вам также больше не нужны app-package или app-activity возможности Appium 1.0.

Попробуйте эти возможности:

capabilities.setCapability("appium-version", "1.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "4.2");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("deviceType", "phone");
capabilities.setCapability("app", "sauce-storage:my_app.apk");
capabilities.setCapability("takesScreenshot", true);
person Dylan Lacey    schedule 02.06.2014