UNPKG

cypress-xml-reporter

Version:

A JUnit XML reporter for Cypress that includes screenshots, videos, and logs.

95 lines (90 loc) 2.84 kB
const expect = require("chai").expect; const parseString = require('xml2js').parseString; const path = require('path'); const fs = require('fs'); /** * Setting */ const testName = path.basename(__filename); const testDataName = testName.replace('test.', 'data.').replace('.js', '.cy.js'); /** * Derived settings */ const testFile = path.join('cypress', 'e2e', 'folder', testDataName); const resultsFile = path.join('results', testFile)+'.xml'; const videoFile = path.join('cypress', 'videos', 'folder', testDataName)+'.mp4'; const screenshotFile = path.join('cypress', 'screenshots', 'folder', testDataName, 'TEST1 -- case3 (failed).png'); /** * Globals */ var suites = []; var cySuite = {}; before( () => { var theFile = fs.readFileSync(resultsFile, 'utf-8'); parseString(theFile, function (err, results) { suites = results.testsuites.testsuite; cySuite = results.testsuites.$; fs.writeFileSync('results.json', JSON.stringify(suites, null, 2)); }); }); describe(testName, () => { describe('Cypress Suite', () => { it('Name', () => { expect(cySuite.name).to.equal('Cypress Tests'); }); it('Tests Count', () => { expect(cySuite.tests).to.equal('3'); }); it('Failures Count', () => { expect(cySuite.failures).to.equal('1'); }); it('Pending Count', () => { expect(cySuite.skipped).to.equal('0'); }); }); describe('Root Suite', () => { it('Name', () => { expect(suites[0].$.name).to.equal('Root Suite'); }); it('Tests Count', () => { expect(suites[0].$.tests).to.equal('0'); }); it('File Name', () => { expect(suites[1].$.file).to.equal(testFile.replaceAll(path.sep, '/')); }); }); describe('TEST1', () => { it('Name', () => { expect(suites[1].$.name).to.equal('TEST1'); }); it('Tests Count', () => { expect(suites[1].$.tests).to.equal('3'); }); it('File Name', () => { expect(suites[1].$.file).to.equal(testFile.replaceAll(path.sep, '/')); }); it('System-out', () => { var systemout = suites[1]['system-out'][0]; expect(systemout).to.equal('[[ATTACHMENT|'+videoFile.replaceAll(path.sep, '/')+']]'); }); describe('Testcases', ()=> { var testcases; before(() => { testcases = suites[1]['testcase']; }); it('"case1" name', () => { expect(testcases[0].$.name).to.equal('case1'); }); it('"case2" name', () => { expect(testcases[1].$.name).to.equal('case2'); }); it('"case3" name', () => { expect(testcases[2].$.name).to.equal('case3'); }); it('"case3" Failure', () => { var systemout = testcases[2]['system-out'][0]; expect(systemout).to.equal('[[ATTACHMENT|'+screenshotFile.replaceAll(path.sep, '/')+']]'); }) }); }); });