Home > Software engineering >  How do I extract JSON data from a raw.github URL and store it in a variable?
How do I extract JSON data from a raw.github URL and store it in a variable?

Time:10-08

Let's say that I have a JSON file called data.json in Github. I can view it in raw in a Github URL like this: https://raw.githubusercontent.com/data.json (This is a hypothetical URL. It's not real)

And let's say that URL contains JSON data like this:

"users_1": [
  {
    "id": 1234,
    "name": "Bob"
  },
  {
    "id": 5678,
    "name": "Alice"
  }
]

How do I extract the whole JSON data from that URL and store it in a variable in a Cypress test? I know that Cypress doesn't really use Promises, so I'm finding it difficult to implement this. So far I got this in Typescript:

let users; // I want this variable to store JSON data from the URL
const dataUrl = "https://raw.githubusercontent.com/data.json";

cy.request(dataUrl).then((response) => {
  users = JSON.parse(response); // This errors out because response is type Cypress.Response<any>
})

I'm planning to do something like this in the future for my project when migrating from Protractor to Cypress. I have a Protractor test that extracts JSON data from a Github file and stores it a variable by using a Promise. I want to do the same kind of task with Cypress.

CodePudding user response:

I think you should use response.body, and it should have been serialized.

A request body to be sent in the request. Cypress sets the Accepts request header and serializes the response body by the encoding option. (https://docs.cypress.io/api/commands/request#Usage)

  • Related