Tomas
Tomas

Reputation: 1667

Testing Mobile App with Appium & WebdriverIO: "No route found for /session"

I want to set up the process of automated testing of mobile applications for Android and iOS platforms (React Native) . For this I use Appium and WebdriverIO. As an example, I am using existing appium-boilerplate codebase and a ready-made application for running tests. I run the application in the Android emulator. Basic settings are presented below.

1. Appium

enter image description here

enter image description here

2. WebdriverIO

wdio.shared.conf.js

exports.config = {
    // ====================
    // Runner and framework
    // Configuration
    // ====================
    runner: 'local',
    framework: 'jasmine',
    jasmineNodeOpts: {
        // Updated the timeout to 30 seconds due to possible longer appium calls
        // When using XPATH
        defaultTimeoutInterval: 90000,
        helpers: [require.resolve('@babel/register')],
    },
    sync: true,
    logLevel: 'silent',
    deprecationWarnings: true,
    bail: 0,
    baseUrl: 'http://the-internet.herokuapp.com',
    waitforTimeout: 10000,
    connectionRetryTimeout: 90000,
    connectionRetryCount: 3,
    reporters: ['spec'],

    // ====================
    // Appium Configuration
    // ====================
    services: [
        [
            'appium',
            {
            // For options see
            // https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-appium-service
                args: {
                    // Auto download ChromeDriver
                    relaxedSecurity: true,
                    // chromedriverAutodownload: true,
                    // For more arguments see
                    // https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-appium-service
                },
                command: 'appium',
            },
        ],
    ],
    port: 4723,
};

wdio.android.app.conf.js.

const { join } = require('path');
const { config } = require('./wdio.shared.conf');

// ============
// Specs
// ============
config.specs = [
    './tests/specs/**/app*.spec.js',
];

// ============
// Capabilities
// ============
// For all capabilities please check
// http://appium.io/docs/en/writing-running-appium/caps/#general-capabilities
config.capabilities = [
    {
        // The defaults you need to have in your config
        platformName: 'Android',
        maxInstances: 1,
        // For W3C the appium capabilities need to have an extension prefix
        // http://appium.io/docs/en/writing-running-appium/caps/
        // This is `appium:` for all Appium Capabilities which can be found here
        'appium:udid': 'emulator-5554',
        'appium:deviceName': 'Android SDK build for x86_64',
        'appium:platformVersion': '10.0',
        'appium:orientation': 'PORTRAIT',
        // `automationName` will be mandatory, see
        // https://github.com/appium/appium/releases/tag/v1.13.0
        'appium:automationName': 'Appium',
        // The path to the app
        'appium:app': join(process.cwd(), './apps/Android-NativeDemoApp-0.2.1.apk'),
        // Read the reset strategies very well, they differ per platform, see
        // http://appium.io/docs/en/writing-running-appium/other/reset-strategies/
        'appium:noReset': true,
        'appium:newCommandTimeout': 240,
    },
];

exports.config = config;

3. Steps

First I open Android emulator and start the Appium server:

enter image description here

enter image description here

Then I use the command to run the tests npm run android.app. After that, the test cases are executed in the background, but nothing happens in the emulator and in the terminal I see the message [HTTP] No route found for /session

enter image description here

My question is: what do need to pay attention to in order to fix this? Because I don't know what to look at and how to set up the configuration correctly. Thank you!

Upvotes: 15

Views: 42179

Answers (4)

flame3
flame3

Reputation: 2992

I got rid of the problem by using this command to start Appium server in the terminal:

appium --base-path /wd/hub 

And use this setting in the Appium inspector

And use this setting in the Appium inspector

By the way, it might still not work if you use iOS simulator/device with version >= 15 with Appium 1.21 because that doesn't support iOS 15. You have to install an older iOS simulator to solve it.

Upvotes: 32

TemporalWolf
TemporalWolf

Reputation: 7952

We were able to resolve this issue by overriding the path variable in the wdio.conf.js:

...
path: '/wd/hub',
port: 4723,
services: ['appium'],
...

Without the path defined it apparently defaults to /session which fails with a 404 as you saw.

Upvotes: 14

Matheus
Matheus

Reputation: 41

Do not run appium server alone.

use directly the webdriver command to run the tests.

Example for android: npm run android.app

Upvotes: 4

Dmytro
Dmytro

Reputation: 141

Ah, I did fixed it. I don't know why, but it works with locally install Appium npm package.

Upvotes: 0

Related Questions