diff --git a/helpers/integration-tests/index.js b/helpers/integration-tests/index.js new file mode 100644 index 000000000..abc1fc116 --- /dev/null +++ b/helpers/integration-tests/index.js @@ -0,0 +1,24 @@ +const { runStaticTests } = require('./staticUrls'); +const { runScannerTest } = require('./scanner'); + +console.log('Integration tests are running...'); + +const runIntegrationTests = async () => { + let error = false; + + for (const test of [runStaticTests, runScannerTest]) { + const errorFound = await test(); + + if (errorFound) { + error = true; + } + } + + console.log(`${ + error ? + '๐Ÿšจ Integration tests completed with errors.' : + '๐Ÿ Integration tests completed successfully!' + }`); +}; + +runIntegrationTests(); diff --git a/helpers/integration-tests/scanner.js b/helpers/integration-tests/scanner.js new file mode 100644 index 000000000..2b9b3dd74 --- /dev/null +++ b/helpers/integration-tests/scanner.js @@ -0,0 +1,26 @@ +const puppeteer = require('puppeteer'); + +const runScannerTest = async () => { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + + await page.goto('https://sonarwhal-staging.azurewebsites.net/scanner/'); + await page.type('#scanner-page-scan', 'https://leosl.github.io/'); + + const [response] = await Promise.all([ + page.waitForNavigation(), + page.click('.button--red') + ]); + + await browser.close(); + + console.log( + `๐Ÿงพ Scanner test executed with ${ + response.status() === 200 ? 'โœ… success' : 'โŒ failure' + }! => Status: ${response.status()}` + ); + + return response.status() !== 200; +}; + +module.exports = { runScannerTest }; diff --git a/helpers/integration-tests/staticUrls.js b/helpers/integration-tests/staticUrls.js new file mode 100644 index 000000000..1f574ce66 --- /dev/null +++ b/helpers/integration-tests/staticUrls.js @@ -0,0 +1,48 @@ +const puppeteer = require('puppeteer'); + +const staticURLsToVerify = [ + 'https://sonarwhal-staging.azurewebsites.net/', + 'https://sonarwhal-staging.azurewebsites.net/search/?q=bla', + 'https://sonarwhal-staging.azurewebsites.net/about/changelog/1', + 'https://sonarwhal-staging.azurewebsites.net/docs/user-guide/hints/' +]; + +const runPuppeteer = async (url) => { + const browser = await puppeteer.launch(); + + try { + const page = await browser.newPage(); + const response = await page.goto(url); + + console.log( + `${ + response.status() === 200 ? 'โœ… Success' : 'โŒ Failure' + }! ${url} => Status: ${response.status()}` + ); + + await browser.close(); + + return response.status(); + } catch (error) { + console.error('๐Ÿšจ Something went wrong while executing Puppeteer: ', error); + await browser.close(); + + return 0; + } +}; + +const runStaticTests = async () => { + let errorFound = false; + + for (const url of staticURLsToVerify) { + const resultStatus = await runPuppeteer(url); + + if (resultStatus !== 200) { + errorFound = true; + } + } + + return errorFound; +}; + +module.exports = { runStaticTests }; diff --git a/package.json b/package.json index d2623d3bb..d716e0d49 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "mktemp": "^1.0.0", "normalize-path": "^3.0.0", "npm-run-all": "^4.1.3", + "puppeteer": "1.20.0", "remove-markdown": "^0.3.0", "shelljs": "^0.8.3", "stylelint": "^11.0.0",