How To Pass Cookies From Selenium WebDriver To Rest-Assured

How to pass cookies from Selenium WebDriver to Rest-Assured? When you do automated testing at API and UI layer, there could be situations where you are doing both and that you need to pass properties from your API test to you UI test or vice versa.

In this example, we show how to pass cookies from Selenium WebDriver to Rest-Assured using Java.

Pass Cookies from Selenium to Rest-Assured

import io.restassured.RestAssured;
import io.restassured.http.Cookies;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import static io.restassured.RestAssured.given;

public class RestAssuredWebDriverCookie {

    @Test
    public void cookieTest() {
        WebDriver driver = new ChromeDriver();

        driver.navigate().to("http://www.someurl.com");

        Set<Cookie> seleniumCookies = driver.manage().getCookies();

        // This is where the Cookies will live going forward
        List restAssuredCookies = new ArrayList();

        // Simply pull all the cookies into Rest-Assured
        for (org.openqa.selenium.Cookie cookie : seleniumCookies) {
            restAssuredCookies.add(new io.restassured.http.Cookie.Builder(cookie.getName(), cookie.getValue()).build());
        }

        // Pass them into the Rest-Assured Call
        given().spec(RestAssured.requestSpecification)
                .basePath("/some-path")
                .cookies(new Cookies(restAssuredCookies))
                .queryParam("id", "1234")
                .get()
                .then().statusCode(200);
    }
}