UNPKG

htmlrewriter

Version:

Use Cloudflare HTMLRewriter in Node.js, Browser, Next.js and more

101 lines (93 loc) 2.71 kB
import { describe, expect, it, test } from 'vitest' import { HTMLRewriter } from 'htmlrewriter' test( 'errors', async () => { const abortController = new AbortController() const res = await fetch('https://framer.com/marketplace', { signal: abortController.signal, }) const transform = new HTMLRewriter() .on('a', { element(element) { throw new Error('aborted') }, }) .transform(res) const err = await transform.text().catch((e) => e) expect(err).toBeInstanceOf(Error) expect(err.message).toContain('aborted') }, 1000 * 10, ) test( 'abort', async () => { const abortController = new AbortController() const res = await fetch('https://framer.com/marketplace', { signal: abortController.signal, }) const err = await new HTMLRewriter() .on('a', { element(e) { const href = e.getAttribute('href') // console.log('href', href) if (href && href.includes('/template/')) { abortController.abort() } }, }) .transform(res) .text() .catch((e) => e) // expect(err).toBeInstanceOf(Error) // expect(err.message).toContain('aborted') // console.log(err) // console.log(err) }, 1000 * 10, ) test( 'works', async () => { const res = await fetch('https://framer.com', { headers: { accept: 'text/html', }, }) const transform = new HTMLRewriter() .on('a', { element(element) { element.remove() }, }) .transform(res) const text = await transform.text() expect(text).toContain('<meta') expect(text).not.toContain('<a ') }, 1000 * 10, ) test( 'works on non-html', async () => { const res = await fetch('https://json.schemastore.org/fly.json', { headers: { // accept: 'text/html', }, }) let resClone = res.clone() const transform = new HTMLRewriter() .on('a', { element(element) {}, }) .transform(res) const text = await transform.text() // console.log(text) expect(text).toEqual(await resClone.text()) }, 1000 * 10, ) function sleep(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)) }