mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-12-06 17:27:59 +00:00
chore: rename test files (#2181)
This commit is contained in:
101
packages/xrpl/test/browser/browserIntegration.test.ts
Normal file
101
packages/xrpl/test/browser/browserIntegration.test.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
/* eslint-disable no-console -- Logging out errors. */
|
||||
import path from 'path'
|
||||
|
||||
import { expect, assert } from 'chai'
|
||||
import puppeteer from 'puppeteer'
|
||||
|
||||
const TIMEOUT = 150000
|
||||
interface TestCaseInfo {
|
||||
name: string
|
||||
span: string
|
||||
error?: string
|
||||
}
|
||||
|
||||
function getCountAndDisplayError(result): number {
|
||||
let count = 0
|
||||
for (const testCase of result.test) {
|
||||
if (Object.prototype.hasOwnProperty.call(testCase, 'error')) {
|
||||
count += 1
|
||||
console.log(
|
||||
`${count})`,
|
||||
result.type,
|
||||
JSON.stringify(testCase, null, '\t'),
|
||||
)
|
||||
}
|
||||
}
|
||||
return count
|
||||
}
|
||||
|
||||
describe('Browser Tests', function () {
|
||||
this.timeout(TIMEOUT)
|
||||
|
||||
it('Integration Tests', async function () {
|
||||
const browser = await puppeteer.launch({ headless: true })
|
||||
let mocha_results
|
||||
try {
|
||||
const page = await browser.newPage().catch()
|
||||
page.setDefaultNavigationTimeout(0)
|
||||
|
||||
await page.goto(
|
||||
path.join('file:///', __dirname, '../localIntegrationRunner.html'),
|
||||
)
|
||||
|
||||
await page.waitForFunction(
|
||||
'document.querySelector("body").innerText.includes("closing test")',
|
||||
{ timeout: TIMEOUT },
|
||||
)
|
||||
|
||||
mocha_results = await page.evaluate(() => {
|
||||
const results: Array<{ type: string; test: TestCaseInfo[] }> = []
|
||||
const items = document.querySelectorAll('.suite')
|
||||
items.forEach((item) => {
|
||||
const tests = item.querySelectorAll('li')
|
||||
const cases: TestCaseInfo[] = []
|
||||
tests.forEach((testCase) => {
|
||||
cases.push({
|
||||
name: testCase.querySelector('h2')?.outerText as string,
|
||||
span: testCase.querySelector('.duration')?.textContent as string,
|
||||
error: testCase.querySelector('.error')?.textContent as string,
|
||||
})
|
||||
})
|
||||
results.push({
|
||||
type: item.querySelector('h1')!.textContent as string,
|
||||
test: cases,
|
||||
})
|
||||
})
|
||||
return results
|
||||
})
|
||||
|
||||
const fails = await page.evaluate(() => {
|
||||
const element = document.querySelector('.failures')
|
||||
|
||||
return element == null ? null : element.textContent
|
||||
})
|
||||
const passes = await page.evaluate(() => {
|
||||
const element = document.querySelector('.passes')
|
||||
|
||||
return element == null ? null : element.textContent
|
||||
})
|
||||
|
||||
expect(fails).to.equal('failures: 0')
|
||||
expect(passes).to.not.equal('passes: 0')
|
||||
} catch {
|
||||
// '\x1b[31m' specifies that console text will be displayed in color red here on.
|
||||
console.log('\x1b[31m', 'Failed Tests:')
|
||||
let count = 0
|
||||
for (const result of mocha_results) {
|
||||
count += getCountAndDisplayError(result)
|
||||
}
|
||||
// '\x1b[0m' specifies that console text color will be reset.
|
||||
console.log(
|
||||
`Total ${count} test${count === 1 ? '' : 's'} failed. \n`,
|
||||
'\x1b[0m',
|
||||
)
|
||||
|
||||
// we would always want the number of failing tests to be zero.
|
||||
assert.equal(0, count)
|
||||
} finally {
|
||||
await browser.close()
|
||||
}
|
||||
}).timeout(TIMEOUT)
|
||||
})
|
||||
Reference in New Issue
Block a user