---
title: Running tests on TestingBot | Appium and WebDriverIO
description: WebDriverIO contains a specific TestingBot service. This makes it easy
  to run tests with WebDriverIO on TestingBot. WebDriverIO will start a TestingBot…
source_url:
  html: https://testingbot.com/resources/courses/appium-webdriverio/tests-on-testingbot
  md: https://testingbot.com/resources/courses/appium-webdriverio/tests-on-testingbot.md
---

Course

[Appium and WebDriverIO](https://testingbot.com/resources/courses/appium-webdriverio)

Chapter 7 of 7 86%

1. [WebDriverIO Architecture](https://testingbot.com/resources/courses/appium-webdriverio)
2. [Learn about Appium](https://testingbot.com/resources/courses/appium-webdriverio/what-is-appium)
3. [Locate Elements](https://testingbot.com/resources/courses/appium-webdriverio/locate-elements)
4. [Implicit and Explicit Waits](https://testingbot.com/resources/courses/appium-webdriverio/implicit-explicit-wait)
5. [The Page Object Model](https://testingbot.com/resources/courses/appium-webdriverio/page-object-model)
6. [WebDriverIO Reporters](https://testingbot.com/resources/courses/appium-webdriverio/webdriverio-reporters)
7. [7 Running tests on TestingBot](https://testingbot.com/resources/courses/appium-webdriverio/tests-on-testingbot)

[Exit course](https://testingbot.com/resources/courses)

 Chapter 7 of 7 Easy 2 mins read Updated Oct 2023 

# Running tests on TestingBot

WebDriverIO contains a specific TestingBot service. This makes it easy to run tests with WebDriverIO on TestingBot. WebDriverIO will start a TestingBot Tunnel if required and send back the test meta-data (passed state, name, build-id, ...).

To get started, you can install the service:

```bash
npm install @wdio/testingbot-service --save-dev
```

Once added, you will need to modify `wdio.conf.js` to add the service and the necessary credentials to access the TestingBot Appium grid.

```javascript
...
services: [
        ['testingbot']
    ],
	user: '...',
	key: '...',
...
```

## Uploading a mobile app

TestingBot provides a storage feature to upload a native mobile app. Once uploaded, you can specify this app in the capabilities of your test. At the start of your test, the app will be downloaded on the device.

You can then create a test in WebDriverIO to interact with the app on a specific physical mobile device on TestingBot. The example below is a script that shows how to interact with a calculator app.

```javascript
const assert = require('assert')
describe('calculator', function() {
        it('should calculate a sum', async () => {
            const inputA = await $('~inputA')
            await inputA.waitForDisplayed(5000)
            await inputA.click()
            try {
                    await inputA.addValue('10')
            } catch (e) {}

            const inputB = await $('~inputB')
            await inputB.waitForDisplayed(5000)
            await inputB.click()
            try {
                    await inputB.addValue('5')
            } catch (e) {}

            const sumElement = await $('~sum')
            const sum = await sumElement.getText()
            assert.equal(sum, '15') // 10 + 5
        })
})
```

## Test results

When the test has finished running, you will see a recorded video and test logs. The advantage of using a cloud-based service such as TestingBot is that you can run tests on a variety of devices, simultaneously.

[Previous · Chapter 6 WebDriverIO Reporters](https://testingbot.com/resources/courses/appium-webdriverio/webdriverio-reporters)
## You finished Appium and WebDriverIO

Put what you learned into practice. Run your tests on 6100+ real browsers and physical iOS and Android devices.

[Start free trial](https://testingbot.com/users/sign_up) [See pricing](https://testingbot.com/pricing) [Browse other courses](https://testingbot.com/resources/courses)
