Thomas Szabo
Thomas Szabo

Reputation: 51

WebdriverIO can not create session to test Android emulator with Appium

I am using Visual Studio Code and WDIO with Appium to test Android on emulator by Android Studio, but I can not run Appium for some reason. However Android home and Java home has been set and Appium Doctor confirms necessary dependencies are completed, no fix needed.

I have tried with Appium stand-alone and from Command too.

Wit Appium standalone the ERROR log is the below:

ERROR webdriver: Request failed with status 500 due to session not created: Unable to create session from {
"desiredCapabilities": {
"platformName": "android",
"appium:deviceName": "Pixel",
"appium:platformVersion": "10.0",
"appium:app": "\u002fUsers\u002fzsolt\u002fappium_js\u002fApiDemos-debug.apk"

If I add ['appium'] to services in wdio.config.js the ERROR log is the below, though Appium stand-alone is shut:

ERROR @wdio/cli:utils: A service failed in the 'onPrepare' hook
Error: Appium exited before timeout (exit code: 2)
[HTTP] Could not start REST http interface listener. The requested port may already be in use. Please make sure there is no other instance of this server running already.
at ChildProcess.<anonymous> (C:\Users\zsolt\Documents\AppiumTestProject\node_modules\@wdio\appium-service\build\launcher.js:103:16)
at Object.onceWrapper (events.js:417:26)
at ChildProcess.emit (events.js:310:20)
at ChildProcess.EventEmitter.emit (domain.js:482:12)
at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)

This is my wdio.config.js file with using Appium stand-alone:

exports.config = {
    
    runner: 'local',
    port: 4723,
    
    specs: [
        './test/specs/**/*.js'
    ],
    
    exclude: [
        // 'path/to/excluded/files'
    ],
    
    maxInstances: 10,
    
    capabilities: [{
        platformName: 'android',
        'appium:deviceName': 'Pixel',
        'appium:platformVersion': '10.0',
        'appium:app': '/Users/zsolt/appium_js/ApiDemos-debug.apk'
        
    }],
    
    logLevel: 'error',
   
    bail: 0,
    
    baseUrl: 'http://localhost',
    
    waitforTimeout: 10000,
    
    connectionRetryTimeout: 120000,
    
    connectionRetryCount: 3,
    
    services: ['selenium-standalone', 
    /*['appium', {
        //command : 'appium'
    }]*/],
    
    reporters: ['spec'],
 
    mochaOpts: {
        ui: 'bdd',
        timeout: 60000
    },

These are my:

"devDependencies": {
   "@wdio/local-runner": "^6.1.11",
   "@wdio/mocha-framework": "^6.1.8",
   "@wdio/selenium-standalone-service": "^6.0.16",
   "@wdio/spec-reporter": "^6.1.9",
   "@wdio/sync": "^6.1.8",
   "appium": "^1.17.1"

Has anybody an idea what am I doing wrong?

Upvotes: 3

Views: 12723

Answers (4)

len
len

Reputation: 1

Check that the file you are running is inside the correct folder when you do the 'npx wdio'.

this file

Upvotes: 0

Raju
Raju

Reputation: 2509

Welcome to Stack-overflow!

Below is my configuration and I believe you are missing some important details.

{
  platformName: 'Android',
  maxInstances: 1,
  'appium:deviceName': 'Device Name',
  'appium:platformVersion': '8'
  'appium:orientation': 'PORTRAIT',
  'appium:app': 'Path to App',
  'appium:automationName': 'UiAutomator2',
  'appium:noReset': true,
  'appium:newCommandTimeout': 240,
}

There are boilerplates from maintainers themselves here.

Upvotes: 2

user10438031
user10438031

Reputation: 21

Also you need to install the Appium service:

$ npm i @wdio/appium-service --save-dev

Finally check in your wdio.conf.js:

port: 4723, // default appium port
services: [
    [
        'appium',
        {
            args: {
            },
            command: 'appium'
        }
    ]
],

Upvotes: 2

Thomas Szabo
Thomas Szabo

Reputation: 51

I have played with the boilerplates and was able to run the tests on android emulator through Appium finally.

I have then compared the differences in conf.js and figured out, the below is needed to execute the test.

services:[
        [
            'appium',
            {
            // For options see
            // https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-appium-service
                args: {
                // For arguments see
                // https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-appium-service
                },
                command: 'appium',
            },
        ],
    ],

Interesting but actually the test runs with only the below capabilites too:

capabilities: [{
        platformName: 'Android',
        'appium:deviceName': 'Pixel 2',
        'appium:app': join(process.cwd(), './ApiDemos/ApiDemos-debug.apk'),

    }],

When I execute the test it logs almost the same error messages as before though at the end of the execution it runs the test on the emulator. I did not use the Appium Desktop app.

Not perfect but works...

I guess this issue has been sorted out.

Cheers

Upvotes: 2

Related Questions