Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

346
Vistas
How to properly write the values of an array into a JSON file using writeFile in Cypress?

I wanted to write the values of an array into a JSON file by using writeFile .

console.log(category);

cy.writeFile('cypress/fixtures/actionsName.json', category);

I've outputted the values of the category array. See below

Value of the array

My expected contents of the file would be something like this

enter image description here

However, upon writing the contents of the JSON file using writeFile, it only prints the top level array, not including its contents. Contents of the file

I'm not sure what I'm missing, I would really appreciate if someone can take a look. Thanks in advance!

UPDATE: As per request, below is the code used to populate the category array. Let me know if anything needs to be updated/optimized.

getActionName(){
    let category = new Array();
    let actions = new Array();

    //Get all action name and store to json
    cy.get('.linkbox').each(($category) => {

        //Get category name
        const text = $category.find('.heading').text();
        cy.log("Category: " + text);
        category.push(text);

        //Get each action name and push to the related category
        cy.wrap($category).find('ul li h2').each(($action) => {
            const text = $action.text();
            cy.log("Action: " + text);

            actions.push(text);
        }).then(() => {
            category[text] = actions;
            actions = [];
        })

    }).then(() =>{
        console.log(category);

        //!Only writes the top level array
        cy.writeFile('cypress/fixtures/actionsName.json', category);
    }) 
}
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

It's a bit hard to tell for sure from the screenshot, but I think the array has non-standard properties attached (an Array is an object).

Try converting,

const keys = ['Alert', 'Dynamic Elements', 'Frames and Windows', etc]
const output = keys.reduce((acc, item) => {
  acc[item] = category[item]
  return acc
}, {})
cy.writeFile('cypress/fixtures/actionsName.json', output)

Just looked at your posted code - the problem is as expected, you're attaching the lists to the array as properties. The above should work, or you can clean up the way you gather the lists.

getActionName(){
    //let category = new Array();  // change this to an object
    let category = {};
    let actions = new Array();

    //Get all action name and store to json
    cy.get('.linkbox').each(($category) => {

        //Get category name
        const text = $category.find('.heading').text();
        cy.log("Category: " + text);
        //category.push(text);    // don't need this

        //Get each action name and push to the related category
        cy.wrap($category).find('ul li h2').each(($action) => {
            const text = $action.text();
            cy.log("Action: " + text);

            actions.push(text);
        }).then(() => {
            category[text] = actions;
            actions = [];
        })

    }).then(() =>{
        console.log(category);

        //!Only writes the top level array
        cy.writeFile('cypress/fixtures/actionsName.json', category);
    }) 
}
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda