Cypress mehrmals ausführen und die Ergebnisse in verschiedenen Screenshot-Ordnern in Cypress Version 12.10.0 speichern: Problem beheben
P粉201448898
P粉201448898 2024-03-29 16:41:20
0
2
331

Ich versuche, einen Ordner zu erstellen, um die von Cypress aufgenommenen Screenshots in einem benutzerdefinierten Ordner innerhalb der Screenshots zu speichern, wobei im ScreenshotFolder-Ordner ein neuer Ordner mit einem Ordner mit Datumsangaben vorhanden ist, aber es funktioniert nicht.

Das Problem ist, dass, wenn der Code run.cypress() ausgeführt wird, am Ende die von mir eingegebene Route geändert wird und die Standardroute beibehalten wird.

Der Code kann wie folgt ausgeführt werden:

const cypress = require('cypress');
const fs = require('fs');
const path = require('node:path'); 

//Function that create the test run
var createRunTest = async function (info, folderNameResults){

   //Datetime will be modified every time that the function is called
   var datetime2 = new Date(); //test start date
   datetime2 = datetime2.toISOString().slice(0, 19).replace('T', '_');
   datetime2 = datetime2.replace(/:\s*/g, '_');

   //Then I create the folders of the results for reports and screenshots with the number of execution and his datetime
   //Creation datetime folder in reports (time it runs)
   var reportsFolder = path.join(__dirname, 'cypress', 'reports', folderNameResults, cronInfo.execution_num + '_' + datetime2);
   fs.mkdir(reportsFolder, (err) => {
       if (err) {
          if (err.code == 'EEXIST') return console.error("file exist");
          return console.error(err);
       }
   });

   //Creation datetime folder in screenshots (time it runs)
   var screenshotsFolder = path.join(__dirname, 'cypress', 'screenshots', folderNameResults, info.execution_num + '_' + datetime2);
   fs.mkdir(screenshotsFolder, (err) => { 
       if (err) {
          if (err.code == 'EEXIST') return console.error("file exist");
          return console.error(err);
       }
   });


   console.log("It should be: ", screenshotsFolder);

   let results = await cypress.run({
       browser: 'chrome',
       configFile: __dirname + '/cypress.config.js',
       spec: __dirname + '/cypress/e2e/investigation/testWeb.cy.js', //put your test here
       reporter: "cypress-multi-reporters",
       reporterOptions: {
           "reporterEnabled": "mochawesome",
           "mochawesomeReporterOptions": {
               "reportDir": reportsFolder + "/json/",
               "overwrite": false,
               "html": false,
               "json": true
           }
       },
       videosFolder: __dirname + '/cypress/videos',
       screenshotsFolder: screenshotsFolder,
   });
   console.log("But it is this", results.config.screenshotsFolder);

   info.execution_num += 1;

   return;
}



//Here i have information of execution times
var info = {
    id: 1
    created: new Date().toISOString().slice(0, 10),
    execution_num: 0, //execution number
}

var folderNameResults = info.id + '_' + info.created;


//here i create a folder with folderNameResults in directories "cypress/reports/ and cypress/screenshots"
//i.e. remaining as follow: cypress/reports/1_05_17_2023 (and the same with screenshots)

fs.mkdir(__dirname + '/cypress/reports/' + folderNameResults, (err) => { //creation in REPORTS
    if (err) {
        if (err.code == 'EEXIST') return console.error("file exist");
        return console.error(err);
    }
});

fs.mkdir(__dirname + '/cypress/screenshots/' + folderNameResults, (err) => { //creation in SCREENSHOTS
    if (err) {
        if (err.code == 'EEXIST') return console.error("file exist");
        return console.error(err);
    }
});


//Then i call the function to create a execution test
console.log("FIRST EXECUTION"); //increment +1 execution number (1)
createRunTest(info, folderNameResults).then( () => {
    console.log("SECOND EXECUTION");
    //increment +1 execution number (2)
    createRunTest(info, folderNameResults);
});

Bei der ersten Ausführung zeigt die Ausgabe, dass es nicht funktioniert:

It should be:  C:\Users\xeom\Desktop\Ayudantia\v2_script\script/cypress/screenshots/1_2023-05-17/0_2023-05-17_19_32_30

But it is this C:\Users\xeom\Desktop\Ayudantia\v2_script\script\cypress\screenshots

Was also passiert, ist wie folgt:

Die Datei mit der Aufzeichnung für jede Ausführung wird außerhalb des von Ihnen erstellten Ordners gespeichert und auch im Ordner testWeb.cy.js überschrieben (jeder Ausführungsordner sollte einen Ordner mit diesem Namen haben). < /p>

Außerdem können wir anhand der Berichte sehen, dass es wirklich gut funktioniert.

Wie kann ich das Problem beheben?

P粉201448898
P粉201448898

Antworte allen(2)
P粉356128676

Wandille 是正确的,您只是将配置设置在错误的位置 - 所以我怀疑您正在努力学习基础知识。

我建议使用 before() 设置屏幕截图路径,这样更改不仅适用于模块 API 调用,还适用于 cypress runcypress open

before(() => {
  const folderName = 'ROX';
  const timestamp = (new Date())
    .toISOString()
    .slice(0, 19)
    .replace('T', '_')
    .replace(/:\s*/g, '_')
  
  const myScreenshotsFolder = `${folderName}/${timestamp}`
  
  Cypress.Commands.overwrite('screenshot', (originalFn, subject, ...args) => {
    let {name, userOptions} = args
    name = `${myScreenshotsFolder}/${(name || Cypress.currentTest.title)}`
    originalFn(subject, name, userOptions)
  })
})

注释:

  • 您想要的额外路径 myScreenshotsFolder 会自动添加到基本路径 cypress/screenshots

  • 您的测试定义文件名 cy.screenshot('some-file-name') 将使用它,否则使用测试标题。这遵循赛普拉斯当前的惯例。

  • before() 应放入 cypress/support/e2e.js 文件以供全局使用

P粉828463673

screenshotsFolder 应位于 config 部分

let results = await cypress.run({
    browser: 'chrome',
    configFile: __dirname + '/cypress.config.js',
    //spec: __dirname + '/cypress/e2e/investigacion/testWeb.cy.js',
    reporter: "cypress-multi-reporters",
    reporterOptions: {
        "reporterEnabled": "mochawesome",
        "mochawesomeReporterOptions": {
            "reportDir": "cypress/reports/" + folderName + '/' + datetime + "/json/",
            //"reportDir": "cypress/reports/json/",
            "overwrite": false,
            "html": false,
            "json": true
        }
    },
    config:{
       videosFolder: __dirname + '/cypress/videos',
       screenshotsFolder: screenshotsFolder
    }
});

代码来源

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!