Bosh sahifa Wiki Network interception

Network interception

Network interception — browser yoki test vositasi web sahifa yuboradigan tarmoq so‘rovlarini kuzatishi, o‘zgartirishi, bloklashi yoki sun’iy javob bilan almashtirishi mexanizmidir. U frontendni muayyan backend holatida tekshirish, third-party resursni izolyatsiya qilish, xato javobini yaratish va request tarkibini tasdiqlashda ishlatiladi.

Request lifecycle

Route handler URL, method, header va resource type bo‘yicha so‘rovni ushlaydi. Handler requestni o‘z holicha davom ettirishi, method yoki headerni o‘zgartirishi, abort qilishi yoki tayyor response qaytarishi mumkin. Real serverga yuborib, qaytgan javobni o‘zgartirish ham ayrim frameworklarda mavjud.

await context.route('**/api/profile', async route => {
  await route.fulfill({
    status: 200,
    contentType: 'application/json',
    body: JSON.stringify({ name: 'UzbekDevs' })
  });
});

Mock real API chaqirilmasdan deterministik javob beradi. Route testdan oldin o‘rnatiladi, aks holda tez request handler tayyor bo‘lishidan avval chiqib ketishi mumkin.

Kuzatish va tasdiqlash

Interception request payload, query va authorization header mavjudligini tekshirishi mumkin. Maxfiy token test logiga to‘liq chiqarilmaydi. Response status va timing performance diagnostikasiga yordam beradi, ammo browser ko‘rgan vaqt backendning ichki processing vaqtiga teng emas.

Bir action bir nechta o‘xshash request yuborishi mumkin. Test “birinchi response”ga bog‘lanmasdan correlation, body yoki endpoint sharti bilan keraklisini ajratadi. Promise yoki event listener actiondan oldin yaratiladi, shunda race yuz bermaydi.

Mocking darajasi

To‘liq mock frontend logikasini tez va barqaror sinaydi, lekin real schema, CORS, cookie va deployment konfiguratsiyasi xatosini yashiradi. Contract test mock response real API specificationiga mosligini tekshiradi. Muhim oqimlar kamida bir qatlamda haqiqiy backend bilan ham sinovdan o‘tadi.

HAR fayli yozilgan tarmoq trafikini qayta ijro etishi mumkin. U realistik javob beradi, ammo vaqt o‘tishi bilan eskiradi va ichida credential yoki shaxsiy data bo‘lishi mumkin. HAR sanitizatsiya qilinadi va API versioni bilan yangilanadi.

Xato va kechikish ssenariylari

Abort offline yoki connection failure holatini yaratadi. Fulfill orqali 401, 429, 500, noto‘g‘ri JSON yoki bo‘sh javob berilib, UI error handlingi tekshiriladi. Sun’iy latency loading indikator va duplicate submit himoyasini ko‘rsatadi.

Faqat ideal 200 response bilan test qilish frontendning recovery yo‘lini qamramaydi. Shu bilan birga imkonsiz response kombinatsiyasini yaratish foydasiz natija beradi; mock protokol va domen invariantlariga mos bo‘lishi kerak.

Texnik chegaralar

Service worker requestni browser ichida javoblantirsa ayrim interception qatlamlari uni ko‘rmasligi mumkin. WebSocket frame, HTTP/2 push yoki browser cache xatti-harakati oddiy HTTP route API bilan to‘liq boshqarilmasligi ehtimol. Tool hujjatidagi qo‘llov chegarasi hisobga olinadi.

Route handler test tugaganda olib tashlanadi. Suite bo‘ylab qolgan umumiy handler boshqa testning real requestini tasodifan mock qilishi mumkin. Context darajasidagi izolyatsiya bu xavfni kamaytiradi.

Cache va autentifikatsiya

Browser cache response qaytarsa network handler kutilgan requestni ko‘rmasligi mumkin. Test cache ni tozalashi, unique URL ishlatishi yoki response headerni boshqarishi mumkin. Cache xatti-harakatining o‘zi test qilinayotgan bo‘lsa interception uni tasodifan o‘chirib qo‘ymasligi kerak.

Mocked 200 response server authorizationini chetlab o‘tadi. Access-control testi real backend bilan bajariladi yoki mock faqat UI ning 403 holatini ko‘rsatishini tekshiradi. Request headerdagi tokenni mavjudligi bo‘yicha tekshirish uning server tomonidan valid va to‘g‘ri scope bilan qabul qilinishini isbotlamaydi.

Bog‘liq tushunchalar

HTTP request, API mocking, HAR, Browser context, Contract testing, Service worker, Network trace