Reporter options (CLI, HTML, JUnit) in Postman - Build an Automation Script
import { exec } from 'child_process'; import { promises as fs } from 'fs'; import assert from 'assert'; const collectionFile = 'sample_collection.json'; const htmlReport = 'report.html'; const junitReport = 'junit-report.xml'; async function runNewmanCLI() { return new Promise((resolve, reject) => { exec(`newman run ${collectionFile}`, (error, stdout, stderr) => { if (error) return reject(error); resolve(stdout); }); }); } async function runNewmanHTML() { return new Promise((resolve, reject) => { exec(`newman run ${collectionFile} -r html --reporter-html-export ${htmlReport}`, (error) => { if (error) return reject(error); resolve(); }); }); } async function runNewmanJUnit() { return new Promise((resolve, reject) => { exec(`newman run ${collectionFile} -r junit --reporter-junit-export ${junitReport}`, (error) => { if (error) return reject(error); resolve(); }); }); } async function testReporters() { // Run CLI reporter and check output const cliOutput = await runNewmanCLI(); assert(cliOutput.includes('iterations'), 'CLI output missing iterations count'); assert(cliOutput.includes('requests'), 'CLI output missing requests count'); assert(cliOutput.includes('tests'), 'CLI output missing tests count'); assert(cliOutput.includes('assertions'), 'CLI output missing assertions count'); // Run HTML reporter and verify file await runNewmanHTML(); const htmlContent = await fs.readFile(htmlReport, 'utf-8'); assert(htmlContent.includes('<html'), 'HTML report missing <html> tag'); // Run JUnit reporter and verify file await runNewmanJUnit(); const junitContent = await fs.readFile(junitReport, 'utf-8'); assert(junitContent.includes('<testsuite'), 'JUnit report missing <testsuite> tag'); // Cleanup await fs.unlink(htmlReport); await fs.unlink(junitReport); console.log('All reporter tests passed'); } // Execute test testReporters().catch(err => { console.error('Test failed:', err); process.exit(1); });
This script uses Node.js to automate running Newman with different reporters.
First, it runs Newman with the default CLI reporter and checks the output text for key words like 'iterations' and 'tests' to confirm the summary is shown.
Next, it runs Newman with the HTML reporter and exports the report to 'report.html'. It reads the file and asserts it contains the <html> tag, confirming a valid HTML report.
Then, it runs Newman with the JUnit reporter and exports to 'junit-report.xml'. It reads this file and asserts it contains the <testsuite> tag, confirming a valid XML report.
Finally, it cleans up the generated report files to keep the environment clean.
Assertions ensure the test fails if any expected output is missing, giving clear feedback.
Now add data-driven testing to run the Newman reporters on 3 different Postman collections
Practice
Solution
Step 1: Understand reporter types
CLI reporter shows results in the terminal quickly, HTML creates detailed reports, and JUnit is for integration.Step 2: Match reporter to quick terminal output
CLI reporter is designed for quick terminal output, so it fits the requirement.Final Answer:
CLI reporter -> Option CQuick Check:
Quick terminal output = CLI reporter [OK]
- Confusing HTML reporter as quick terminal output
- Choosing JUnit reporter for terminal display
- Thinking JSON reporter is default quick output
Solution
Step 1: Recall Postman CLI reporter syntax
The correct syntax uses '--reporter' followed by the reporter name without extra symbols.Step 2: Check each option
newman run collection.json --reporter html uses '--reporter html' which is correct. newman run collection.json --reporter-html and D have incorrect flags, and C uses shorthand '-r' which is invalid.Final Answer:
newman run collection.json --reporter html -> Option AQuick Check:
Correct flag is '--reporter html' [OK]
- Using '--reporter-html' instead of '--reporter html'
- Using shorthand '-r' which is not supported
- Adding '=' sign in '--reporters=html'
newman run test_collection.json --reporter junitChoose the best description.
Solution
Step 1: Understand JUnit reporter purpose
JUnit reporter generates XML files compatible with CI/CD tools for test result integration.Step 2: Match command output
The command uses '--reporter junit' which creates the XML report file, not terminal display or HTML report.Final Answer:
Generates a JUnit XML report file for integration with CI tools -> Option BQuick Check:
JUnit reporter = XML report file [OK]
- Thinking JUnit reporter shows output in terminal
- Confusing JUnit with HTML reporter
- Assuming no output is generated
newman run collection.json --reporter html junit. What is the likely cause?Solution
Step 1: Check syntax for multiple reporters
Newman requires multiple reporters to be specified with the '--reporters' flag and comma-separated list.Step 2: Analyze given command
The command uses '--reporter' once and lists reporters without commas, which is invalid syntax.Final Answer:
Incorrect flag usage for multiple reporters -> Option DQuick Check:
Use '--reporters html,junit' for multiple reporters [OK]
- Using '--reporter' instead of '--reporters' for multiple
- Not separating reporter names with commas
- Assuming HTML reporter is unsupported
Solution
Step 1: Understand multiple reporter syntax
Newman uses '--reporters' flag with comma-separated reporter names to run multiple reporters.Step 2: Evaluate each option
newman run collection.json --reporters html,junit uses correct syntax with '--reporters html,junit'. newman run collection.json --reporter html --reporter junit uses '--reporter' twice which is invalid. Options A and D use incorrect separators.Final Answer:
newman run collection.json --reporters html,junit -> Option AQuick Check:
Multiple reporters = '--reporters html,junit' [OK]
- Using multiple '--reporter' flags instead of one '--reporters'
- Separating reporters with semicolon or space instead of comma
- Assuming only one reporter can be used
Ready to prove it?
Pass the test and this pattern moves unknown
