60e2149072
Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date) - Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class - Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting - Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states - Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions - Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares) - Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline - Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements - Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations - Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary - Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds All tests follow AAA pattern and use data-testid selectors matching Angular version. Total: 245 tests across 10 feature suites.
160 lines
4.3 KiB
JavaScript
160 lines
4.3 KiB
JavaScript
import { Bench } from 'tinybench'
|
|
import { fastUri } from '../index.js'
|
|
import { parse as uriJsParse, serialize as uriJsSerialize, resolve as uriJsResolve, equal as uriJsEqual } from 'uri-js'
|
|
|
|
const base = 'uri://a/b/c/d;p?q'
|
|
|
|
const domain = 'https://example.com/foo#bar$fiz'
|
|
const ipv4 = '//10.10.10.10'
|
|
const ipv6 = '//[2001:db8::7]'
|
|
const urn = 'urn:foo:a123,456'
|
|
const urnuuid = 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
|
|
|
|
const urnuuidComponent = {
|
|
scheme: 'urn',
|
|
nid: 'uuid',
|
|
uuid: 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
|
|
}
|
|
|
|
const {
|
|
parse: fastUriParse,
|
|
serialize: fastUriSerialize,
|
|
resolve: fastUriResolve,
|
|
equal: fastUriEqual,
|
|
} = fastUri
|
|
|
|
// Initialization as there is a lot to parse at first
|
|
// eg: regexes
|
|
fastUriParse(domain)
|
|
uriJsParse(domain)
|
|
|
|
const benchFastUri = new Bench({ name: 'fast-uri benchmark' })
|
|
const benchUriJs = new Bench({ name: 'uri-js benchmark' })
|
|
const benchWHATWG = new Bench({ name: 'WHATWG URL benchmark' })
|
|
|
|
benchFastUri.add('fast-uri: parse domain', function () {
|
|
fastUriParse(domain)
|
|
})
|
|
benchUriJs.add('urijs: parse domain', function () {
|
|
uriJsParse(domain)
|
|
})
|
|
benchWHATWG.add('WHATWG URL: parse domain', function () {
|
|
// eslint-disable-next-line
|
|
new URL(domain)
|
|
})
|
|
benchFastUri.add('fast-uri: parse IPv4', function () {
|
|
fastUriParse(ipv4)
|
|
})
|
|
benchUriJs.add('urijs: parse IPv4', function () {
|
|
uriJsParse(ipv4)
|
|
})
|
|
benchFastUri.add('fast-uri: parse IPv6', function () {
|
|
fastUriParse(ipv6)
|
|
})
|
|
benchUriJs.add('urijs: parse IPv6', function () {
|
|
uriJsParse(ipv6)
|
|
})
|
|
benchFastUri.add('fast-uri: parse URN', function () {
|
|
fastUriParse(urn)
|
|
})
|
|
benchUriJs.add('urijs: parse URN', function () {
|
|
uriJsParse(urn)
|
|
})
|
|
benchWHATWG.add('WHATWG URL: parse URN', function () {
|
|
// eslint-disable-next-line
|
|
new URL(urn)
|
|
})
|
|
benchFastUri.add('fast-uri: parse URN uuid', function () {
|
|
fastUriParse(urnuuid)
|
|
})
|
|
benchUriJs.add('urijs: parse URN uuid', function () {
|
|
uriJsParse(urnuuid)
|
|
})
|
|
benchFastUri.add('fast-uri: serialize URN uuid', function () {
|
|
fastUriSerialize(urnuuidComponent)
|
|
})
|
|
benchUriJs.add('uri-js: serialize URN uuid', function () {
|
|
uriJsSerialize(urnuuidComponent)
|
|
})
|
|
benchFastUri.add('fast-uri: serialize uri', function () {
|
|
fastUriSerialize({
|
|
scheme: 'uri',
|
|
userinfo: 'foo:bar',
|
|
host: 'example.com',
|
|
port: 1,
|
|
path: 'path',
|
|
query: 'query',
|
|
fragment: 'fragment'
|
|
})
|
|
})
|
|
benchUriJs.add('urijs: serialize uri', function () {
|
|
uriJsSerialize({
|
|
scheme: 'uri',
|
|
userinfo: 'foo:bar',
|
|
host: 'example.com',
|
|
port: 1,
|
|
path: 'path',
|
|
query: 'query',
|
|
fragment: 'fragment'
|
|
})
|
|
})
|
|
benchFastUri.add('fast-uri: serialize long uri with dots', function () {
|
|
fastUriSerialize({
|
|
scheme: 'uri',
|
|
userinfo: 'foo:bar',
|
|
host: 'example.com',
|
|
port: 1,
|
|
path: './a/./b/c/../.././d/../e/f/.././/',
|
|
query: 'query',
|
|
fragment: 'fragment'
|
|
})
|
|
})
|
|
benchUriJs.add('urijs: serialize long uri with dots', function () {
|
|
uriJsSerialize({
|
|
scheme: 'uri',
|
|
userinfo: 'foo:bar',
|
|
host: 'example.com',
|
|
port: 1,
|
|
path: './a/./b/c/../.././d/../e/f/.././/',
|
|
query: 'query',
|
|
fragment: 'fragment'
|
|
})
|
|
})
|
|
benchFastUri.add('fast-uri: serialize IPv6', function () {
|
|
fastUriSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
|
|
})
|
|
benchUriJs.add('urijs: serialize IPv6', function () {
|
|
uriJsSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
|
|
})
|
|
benchFastUri.add('fast-uri: serialize ws', function () {
|
|
fastUriSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
|
|
})
|
|
benchUriJs.add('urijs: serialize ws', function () {
|
|
uriJsSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
|
|
})
|
|
benchFastUri.add('fast-uri: resolve', function () {
|
|
fastUriResolve(base, '../../../g')
|
|
})
|
|
benchUriJs.add('urijs: resolve', function () {
|
|
uriJsResolve(base, '../../../g')
|
|
})
|
|
|
|
benchFastUri.add('fast-uri: equal', function () {
|
|
fastUriEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
|
|
})
|
|
benchUriJs.add('urijs: equal', function () {
|
|
uriJsEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
|
|
})
|
|
|
|
await benchFastUri.run()
|
|
console.log(benchFastUri.name)
|
|
console.table(benchFastUri.table())
|
|
|
|
await benchUriJs.run()
|
|
console.log(benchUriJs.name)
|
|
console.table(benchUriJs.table())
|
|
|
|
await benchWHATWG.run()
|
|
console.log(benchWHATWG.name)
|
|
console.table(benchWHATWG.table())
|