🏡 index : quine-global/webdriverio.git

---
id: bamboo
title: Bamboo
---

WebdriverIO offers a tight integration to CI systems like [Bamboo](https://www.atlassian.com/software/bamboo). With the [JUnit](https://webdriver.io/docs/junit-reporter.html) or [Allure](https://webdriver.io/docs/allure-reporter.html) reporter, you can easily debug your tests as well as keep track of your test results. The integration is pretty easy.

1. Install the JUnit test reporter: `$ npm install @wdio/junit-reporter --save-dev`)
1. Update your config to save your JUnit results where Bamboo can find them, (and specify the `junit` reporter):

```js
// wdio.conf.js
module.exports = {
    // ...
    reporters: [
        'dot',
        ['junit', {
            outputDir: './testresults/'
        }]
    ],
    // ...
}
```
Note: *It's always a good standard to keep the test results in separate folder than in the root folder.*

```js
// wdio.conf.js - For tests running in parallel
module.exports = {
    // ...
    reporters: [
        'dot',
        ['junit', {
            outputDir: './testresults/',
            outputFileFormat: function (options) {
                return `results-${options.cid}.xml`;
            }
        }]
    ],
    // ...
}
```

The reports will be similar for all the frameworks and you can use anyone: Mocha, Jasmine or Cucumber.

By this time, we believe you have the tests written up and results are generated in ```./testresults/``` folder, and your Bamboo is up and running.

## Integrate your tests in Bamboo

1. Open your Bamboo project
    > Create a new plan, link your repository (make sure it always points to newest version of your repository) and create your stages

    ![Plan Details](/img/bamboo/plancreation.png "Plan Details")

    I will go with the default stage and job. In your case, you can create your own stages and jobs

    ![Default Stage](/img/bamboo/defaultstage.png "Default Stage")
2. Open your testing job and create tasks to run your tests in Bamboo
    >**Task 1:** Source Code Checkout

    >**Task 2:** Run your tests ```npm i && npm run test```. You can use *Script* task and *Shell Interpreter* to run the above commands (This will generate the test results and save them in ```./testresults/``` folder)

    ![Test Run](/img/bamboo/testrun.png "Test Run")

    >**Task: 3** Add *jUnit Parser* task to parse your saved test results. Please specify the test results directory here (you can use Ant style patterns as well)

    ![jUnit Parser](/img/bamboo/junitparser.png "jUnit Parser")

    Note: *Make sure you are keeping the results parser task in *Final* section, so that it always get executed even if your test task is failed*

    >**Task: 4** (optional) In order to make sure that your test results are not messed up with old files, you can create a task to remove the ```./testresults/``` folder after a successful parse to Bamboo. You can add a shell script like ```rm -f ./testresults/*.xml``` to remove the results or ```rm -r testresults``` to remove the complete folder

Once the above *rocket science* is done, please enable the plan and run it. Your final output will be like:

## Successful Test

![Successful Test](/img/bamboo/successfulltest.png "Successful Test")

## Failed Test

![Failed Test](/img/bamboo/failedtest.png "Failed Test")

## Failed and Fixed

![Failed and Fixed](/img/bamboo/failedandfixed.png "Failed and Fixed")

Yay!! That's all. You have successfully integrated your WebdriverIO tests in Bamboo.