Rayrun

How can I use the Playwright APIRequestContext class to log in using HTTP requests instead of form filling?

Answer

Using HTTP Requests for Login with Playwright

You can use Playwright's APIRequestContext class to log in via HTTP requests instead of form filling.

First, create an instance of APIRequestContext by calling browser.newContext(). Pass in an object with context options like httpCredentials for authentication and proxy for a proxy server setup.

const context = await browser.newContext({
  httpCredentials: { username: 'myusername', password: 'mypassword' },
});

Next, use the fetch() method of APIRequestContext to send HTTP requests. First, send a GET request to retrieve any necessary cookies or tokens for authentication.

const page = await context.newPage();
await page.goto('https://ray.run/login');

// Retrieve anti-forgery token from cookie
const cookies = await context.cookies();
const xsrfToken = cookies.find(c => c.name === 'XSRF-TOKEN').value;

Finally, include these values as headers or query parameters in your POST request with login credentials.

// Log in using POST request
await context.fetch('https://ray.run/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'X-XSRF-TOKEN': xsrfToken,
  },
  data: {
    username: 'myusername',
    password: 'mypassword',
  },
});

In short, logging in with a request object involves creating an APIRequestContext instance with appropriate options.

References

Thank you!
Was this helpful?
Still have questions?

If you still have questions, please ask a question and I will try to answer it.

Related Questions

TwitterGitHubLinkedIn
AboutQuestionsDiscord ForumBrowser ExtensionTagsQA Jobs

Rayrun is a community for QA engineers. I am constantly looking for new ways to add value to people learning Playwright and other browser automation frameworks. If you have feedback, email luc@ray.run.