Przejdź do głównej zawartości

Scenariusz: timeout

Scenariusz timeout symuluje sytuację, w której API KSeF nie odpowiada w wymaganym czasie. Przydatny do testowania logiki ponawiania zapytań (retry) i odporności aplikacji na awarie sieci.

OperacjaRezultat
fetchInvoicesOpóźnienie + KsefTimeoutError
sendInvoiceOpóźnienie + KsefTimeoutError
getUpoDziała normalnie

Scenariusz rejestruje hooki beforeFetch i beforeSend, które wprowadzają opóźnienie, a następnie rzucają KsefTimeoutError.

ParametrTypDomyślnieOpis
delayMsnumber10000Czas opóźnienia przed rzuceniem błędu
import { createKsefSimulator } from '@ksefnik/simulator'
import { createKsefnik } from '@ksefnik/core'
const { adapter } = createKsefSimulator({
scenario: 'timeout',
delayMs: 100, // 100ms w testach
})
const ksefnik = createKsefnik({
nip: '1234567890',
adapter,
})
// Bez retry -- błąd
try {
await ksefnik.invoices.sync({
dateFrom: '2026-03-01',
dateTo: '2026-03-31',
})
} catch (error) {
console.log(error.name) // "KsefTimeoutError"
console.log(error.message) // "Request timed out after 100ms"
}
import { withRetry } from '@ksefnik/core'
// withRetry automatycznie ponawia zapytania przy timeout
const ksefnik = createKsefnik({
nip: '1234567890',
adapter: withRetry(adapter, {
maxRetries: 3,
baseDelay: 50,
}),
})
// Po 3 nieudanych próbach rzuci KsefTimeoutError
try {
await ksefnik.invoices.sync({
dateFrom: '2026-03-01',
dateTo: '2026-03-31',
})
} catch (error) {
console.log(error.retryCount) // 3
}