Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Overview

Here are described the steps to connect TestRail with write karate integration tests.

Steps 

...

Project Setup

To prepare running karate tests you need to setup TestRail before by creation Test Suite and Sections 

  • Open Test Suites & Cases by testRail top menu and choose + Add Test Suite button

Image Removed

  • Set any name. (For our example it is "mod-orders")

Image Removed

  • Select your Suite and Crate Sections for test runs by + Add Section  and create default section (mod-orders for our case)

Image Removed

Image Removed

Project Setup

...

If you want to create module from scratch then create you maven module within folio-integration-tests folder like acquisitions (See also pom.xml file from folio-integration-tests/acquisitions/pom.xml for example)

  • Create JUnit test file folio-integration-tests/<YourProject>/src/test/java/org/folio/<YourTestFileName>.java
  • Project should have karate configuration file (See acquisitions/src/main/resources/karate-config.js)
  • Extend your Test with TestBase
  • Create constructor with TestModuleConfiguration and specify TEST_BASE_PATH (see FinanceApiTest for example)
Code Block
languagejava

...

public FinanceApiTest() {
	super(new 

...

TestIntegrationService(
	

...

new TestModuleConfiguration(TEST_BASE_PATH

...

)));
}

  • Add an test method with runFeatureTest where parameter is your karate feature file with test logic
Code Block
languagejava
@Test
void deleteOpenedOrderAndOrderLines() {
	runFeatureTest("delete-opened-order-and-lines.feature");
}

...

  • Add two setup mehtods methods into your test file like ordersApiTestBeforeAll financeApiTestBeforeAll (to setup tenant, users and setup data for module run) andordersApiTestAfterAll financeApiTestAfterAll (to destroy tenant and all related data for module run)Note: orders
Note

finance-junit.

...

feature and destroy-data.feature should contain logic to setup and destroy data for tenant. (See examples acquisitions/src/main/resources/domain/mod-finance/finance-junit.feature and common/src/main/resources/common/destroy-data.feature)


Code Block
languagejava
titleSetup and Destroy methods
@BeforeAll
public void ordersApiTestBeforeAllfinanceApiTestBeforeAll() {
	runFeature("classpath:domain/mod-ordersfinance/ordersfinance-junit.feature");
}

@AfterAll
public void ordersApiTestAfterAllfinanceApiTestAfterAll() {
	runFeature("classpath:common/destroy-data.feature");
}

Configuration

For interaction with TestRail we need to Configure our test in constructor with your own configuration. Example:

Code Block
languagejava
titleConfiguration example
public OrdersApiTest() { 
	super(new TestRailIntegrationService(new TestModuleConfiguration(TEST_BASE_PATH, TEST_SUITE_NAME, TEST_SUITE_ID, TEST_SECTION_ID))); 
}

...

  • FINANCE_TEST_BASE_PATH - "classpath:domain/mod-finance/features/"
  • FINANCE_TEST_SUITE_NAME - "mod-finance"
  • TEST_SUITE_ID - "159"
  • FINANCE_TEST_SECTION_ID - 3337

To get suite id and section id you can use postman collection Test Rail.postman_collection.json (Note: Update Authorization with basic Auth and your credentials)

Run

...

integration test

Code Block
languagebash
titleRun examples
mvn test -Dtest=OrdersApiTestFinanceApiTest -pl acquisitions -Dtestrail_url=https://foliotest.testrail.io -Dtestrail_userId=<your_user_id> -Dtestrail_pwd=<password> -Dtestrail_projectId=<test_rail_project_id>

Where you populate your out values like <your_user_id>, <password>, <test_rail_project_id> and instead of "-pl acquisitions" argument you should use your own project name.

Result of

...

If Tests has passed successfully then you should see result "Test Runs & Results" menu section

Image Removed

...

Jenkins after CI build

https://jenkins-aws.indexdata.com/job/FOLIO_Reference_Builds/job/folio-api-tests-karate/237/cucumber-html-reports/overview-features.html

Image Added