Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Testing Bamboo plugin with Selenium

Sebastian_Knopp October 30, 2019

Hi,

i've written a first small plugin which implements a simple WebPanel by velocity template with some conditions. Now i want to test that those conditions work as expected. Because they were implemented in the template file i believe i'll need something like Selenium to test the real output.

What would be the best way to do that? I've found something similar for Jira here. They have a 'jira-func-test-plugin' which implements some nice test classes with selenium under the hood. Is there something like that for bamboo too?

I'm looking for a good starting point for this kind of tests.

Thanks in advance for your help! 

-----

Update: I've now tried to implement it myself like one would do it normally with Selenium. I added a setter to my test class to get the GeneralConfiguration and from that the baseURL of Bamboo (using GeneralConfiguration.getBaseUrl()).

package it.mypackage.path.package;

import
com.atlassian.bamboo.admin.configuration.GeneralConfiguration;
import com.atlassian.bamboo.admin.configuration.GeneralConfigurationService;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import java.net.URISyntaxException;

public class BuildResultSeleniumTest {

private
WebDriver driver;
private GeneralConfiguration generalConfiguration;

public BuildResultSeleniumTest(){
driver = new FirefoxDriver();
}

public void setGeneralConfigurationService(GeneralConfigurationService generalConfigurationService){
try {
this.generalConfiguration = generalConfigurationService.getGeneralConfiguration();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}

@Test
public void testImagePresentForCuedBuild(){
String address = (String) generalConfiguration.getBaseUrl();
System.out.println("Address: " + address);
driver.get(address);
}
}

As described here, Injection should work like that.

Unfortunately the variable 'address' remains NULL, so injection seems not work for tests. How do i get the baseURL in a test?

1 answer

1 accepted

0 votes
Answer accepted
Sebastian_Knopp December 12, 2019

It showed out, that i was missing the correct constructor parameters.

The following worked for me:

    private String baseUrl;

    public BuildResultSeleniumTest(ApplicationProperties applicationProperties,
                                   MyPluginComponent pluginComponent){
        this.applicationProperties = applicationProperties;
        this.pluginComponent = pluginComponent;
        this.baseUrl = applicationProperties.getBaseUrl(UrlMode.ABSOLUTE);
    }

 After that i was able to implement Selenium tests as usual..

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events