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

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: '
    waitforTimeout: 10000,
    connectionRetryTimeout: 90000,
    connectionRetryCount: 3,
    reporters: ['spec'],

    // ====================
    // Appium Configuration
    // ====================
    services: [
        [
            'appium',
            {
            // For options see
            // 
                args: {
                    // Auto download ChromeDriver
                    relaxedSecurity: true,
                    // chromedriverAutodownload: true,
                    // For more arguments see
                    // 
                },
                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
// 
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
        // 
        // 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
        // 
        '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
        // 
        'appium:noReset': true,
        'appium:newCommandTimeout': 240,
    },
];

exports.config = config;

3. Steps

First I open Android emulator and start the Appium server:

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

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!

1

4 Answers

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

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.

1

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.

2

Do not run appium server alone.

use directly the webdriver command to run the tests.

Example for android: npm run android.app

1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest