Skip to content

feat: add unit testing infrastructure, E2E tests, and CI/CD workflows#3758

Merged
Baalmart merged 15 commits into
stagingfrom
web-unit-test
Jul 7, 2026
Merged

feat: add unit testing infrastructure, E2E tests, and CI/CD workflows#3758
Baalmart merged 15 commits into
stagingfrom
web-unit-test

Conversation

@OchiengPaul442

@OchiengPaul442 OchiengPaul442 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Status of maturity (all need to be checked before merging):

  • I've tested this locally
  • I consider this code done

Screenshots (optional)

- Introduced `PaginatedResponse` and `QueryParams` interfaces for handling paginated API responses.
- Defined various interfaces for entities such as `BoardMember`, `Career`, `Event`, `Publication`, and more to standardize data structures.
- Added `normalizeDepartment` helper function for department normalization in `Career`.
- Created `ForumEvent` and `ForumTitlesResponse` interfaces to structure forum event data and responses.
…rd, IconsPackagePage, and PackagesPage components
- Created tests for API routes to ensure section existence and route formats.
- Implemented tests for BaseApiService methods including URL building and HTTP methods.
- Added tests for countrySlice to validate country selection and clearing.
- Developed tests for forumSlice to manage event selection and active tab state.
- Introduced tests for modalSlice to verify modal open/close functionality and state toggling.
@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 412 files, which is 262 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b739625d-b984-4197-a753-d1bf8e163f1a

📥 Commits

Reviewing files that changed from the base of the PR and between 2aac7fa and bc5a4f7.

⛔ Files ignored due to path filters (1)
  • src/website/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (412)
  • .github/workflows/website-ci.yml
  • .github/workflows/website-codecov.yml
  • src/website/.gitignore
  • src/website/README.md
  • src/website/e2e/.env.example
  • src/website/e2e/.mocharc.yml
  • src/website/e2e/config.ts
  • src/website/e2e/pages/about.page.ts
  • src/website/e2e/pages/base.page.ts
  • src/website/e2e/pages/blogs.page.ts
  • src/website/e2e/pages/careers.page.ts
  • src/website/e2e/pages/contact.page.ts
  • src/website/e2e/pages/events.page.ts
  • src/website/e2e/pages/footer.page.ts
  • src/website/e2e/pages/home.page.ts
  • src/website/e2e/pages/legal.page.ts
  • src/website/e2e/pages/navbar.page.ts
  • src/website/e2e/pages/products.page.ts
  • src/website/e2e/pages/solutions.page.ts
  • src/website/e2e/setup.ts
  • src/website/e2e/tests/navigation/footer.test.ts
  • src/website/e2e/tests/navigation/header-navigation.test.ts
  • src/website/e2e/tests/navigation/navbar.test.ts
  • src/website/e2e/tests/navigation/page-transitions.test.ts
  • src/website/e2e/tests/pages/about-page.test.ts
  • src/website/e2e/tests/pages/blogs-page.test.ts
  • src/website/e2e/tests/pages/careers-page.test.ts
  • src/website/e2e/tests/pages/contact-page.test.ts
  • src/website/e2e/tests/pages/events-page.test.ts
  • src/website/e2e/tests/pages/home-page.test.ts
  • src/website/e2e/tests/pages/legal-page.test.ts
  • src/website/e2e/tests/pages/products-page.test.ts
  • src/website/e2e/tests/pages/solutions-page.test.ts
  • src/website/e2e/tsconfig.json
  • src/website/jest.config.js
  • src/website/jest.setup.ts
  • src/website/package.json
  • src/website/src/__mocks__/fileMock.ts
  • src/website/src/__mocks__/mapbox-gl.ts
  • src/website/src/__mocks__/recharts.tsx
  • src/website/src/__mocks__/setup.ts
  • src/website/src/app/(content)/blogs/[slug]/page.tsx
  • src/website/src/app/(content)/blogs/layout.tsx
  • src/website/src/app/(content)/blogs/page.tsx
  • src/website/src/app/(developers)/developers/airqo-devcon/page.tsx
  • src/website/src/app/(developers)/packages/icons/docs/page.tsx
  • src/website/src/app/(developers)/packages/icons/page.tsx
  • src/website/src/app/(developers)/packages/layout.tsx
  • src/website/src/app/(developers)/packages/page.tsx
  • src/website/src/app/(legal)/legal/airqo-data/page.tsx
  • src/website/src/app/(legal)/legal/cookies/page.tsx
  • src/website/src/app/(legal)/legal/layout.tsx
  • src/website/src/app/(legal)/legal/payment-refund-policy/page.tsx
  • src/website/src/app/(legal)/legal/privacy-policy/page.tsx
  • src/website/src/app/(legal)/legal/terms-of-service/page.tsx
  • src/website/src/app/(main)/(about)/layout.tsx
  • src/website/src/app/(products)/products/ai-platform/page.tsx
  • src/website/src/app/(products)/products/analytics/page.tsx
  • src/website/src/app/(products)/products/api/page.tsx
  • src/website/src/app/(products)/products/beacon/page.tsx
  • src/website/src/app/(products)/products/calibrate/page.tsx
  • src/website/src/app/(products)/products/layout.tsx
  • src/website/src/app/(products)/products/mobile-app/page.tsx
  • src/website/src/app/(products)/products/monitor/page.tsx
  • src/website/src/app/(products)/products/vertex/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/[...slug]/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/about/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/committee/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/glossary/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/layout.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/logistics/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/partners/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/program/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/resources/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/speakers/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/[uniqueTitle]/sponsorship/page.tsx
  • src/website/src/app/(programs)/africa-clean-air-forum/page.tsx
  • src/website/src/app/(site)/about-us/page.tsx
  • src/website/src/app/(site)/careers/[id]/page.tsx
  • src/website/src/app/(site)/careers/layout.tsx
  • src/website/src/app/(site)/careers/page.tsx
  • src/website/src/app/(site)/contact/ContactPage.tsx
  • src/website/src/app/(site)/contact/form/FormPage.tsx
  • src/website/src/app/(site)/contact/form/page.tsx
  • src/website/src/app/(site)/contact/layout.tsx
  • src/website/src/app/(site)/contact/page.tsx
  • src/website/src/app/(site)/contact/success/SuccessPage.tsx
  • src/website/src/app/(site)/contact/success/page.tsx
  • src/website/src/app/(site)/events/[id]/page.tsx
  • src/website/src/app/(site)/events/layout.tsx
  • src/website/src/app/(site)/events/page.tsx
  • src/website/src/app/(site)/faqs/page.tsx
  • src/website/src/app/(site)/home/page.tsx
  • src/website/src/app/(site)/layout.tsx
  • src/website/src/app/(site)/partners/[id]/page.tsx
  • src/website/src/app/(site)/partners/layout.tsx
  • src/website/src/app/(site)/press/page.tsx
  • src/website/src/app/(site)/resources/page.tsx
  • src/website/src/app/(solutions)/solutions/african-cities/page.tsx
  • src/website/src/app/(solutions)/solutions/communities/page.tsx
  • src/website/src/app/(solutions)/solutions/kampala-study/page.tsx
  • src/website/src/app/(solutions)/solutions/layout.tsx
  • src/website/src/app/(solutions)/solutions/network-coverage/page.tsx
  • src/website/src/app/(solutions)/solutions/research/page.tsx
  • src/website/src/app/(utility)/billboard/grid/[name]/page.tsx
  • src/website/src/app/(utility)/billboard/interactive/page.tsx
  • src/website/src/app/(utility)/explore-data/layout.tsx
  • src/website/src/app/(utility)/explore-data/mobile-app/page.tsx
  • src/website/src/app/(utility)/explore-data/page.tsx
  • src/website/src/app/africa-clean-air-forum/about/page.tsx
  • src/website/src/app/error.tsx
  • src/website/src/app/globals.css
  • src/website/src/app/layout.tsx
  • src/website/src/app/loading.tsx
  • src/website/src/app/not-found.tsx
  • src/website/src/app/page.tsx
  • src/website/src/app/robots.ts
  • src/website/src/app/robots.txt/route.ts
  • src/website/src/components/CookieConsent.tsx
  • src/website/src/components/FloatingMiniBillboard.tsx
  • src/website/src/components/FloatingMiniBillboardWrapper.tsx
  • src/website/src/components/GoogleTranslate.tsx
  • src/website/src/components/LanguageFlag.tsx
  • src/website/src/components/cards/MemberCard.tsx
  • src/website/src/components/common/AirQualityStatusIcon.tsx
  • src/website/src/components/dialogs/EngagementDialog.tsx
  • src/website/src/components/dialogs/LanguageModal.tsx
  • src/website/src/components/feedback/EmptyState.tsx
  • src/website/src/components/feedback/ErrorState.tsx
  • src/website/src/components/feedback/LoadingState.tsx
  • src/website/src/components/feedback/NoData.tsx
  • src/website/src/components/layout/ActionButtons.tsx
  • src/website/src/components/layout/ActionCard.tsx
  • src/website/src/components/layout/DevConTopTicker.tsx
  • src/website/src/components/layout/Footer.tsx
  • src/website/src/components/layout/Highlight.tsx
  • src/website/src/components/layout/MainLayout.tsx
  • src/website/src/components/layout/Navbar.tsx
  • src/website/src/components/layout/NewsLetter.tsx
  • src/website/src/components/layout/NotificationBanner.tsx
  • src/website/src/components/layout/ScrollToTopButton.tsx
  • src/website/src/components/layout/SolutionsContentLayout.tsx
  • src/website/src/components/layout/TopBanner.tsx
  • src/website/src/components/layouts/ActionButtons.tsx
  • src/website/src/components/layouts/ActionButtons2.tsx
  • src/website/src/components/layouts/Footer.tsx
  • src/website/src/components/loading.tsx
  • src/website/src/components/navigation/nav.types.ts
  • src/website/src/components/packages/FrameworkTabs.tsx
  • src/website/src/components/packages/StatCard.tsx
  • src/website/src/components/providers/AppProviders.tsx
  • src/website/src/components/providers/ForumDataContext.tsx
  • src/website/src/components/providers/QueryProvider.tsx
  • src/website/src/components/providers/ReduxProvider.tsx
  • src/website/src/components/sections/AirQualityBillboard/components/AirQualityDisplay.tsx
  • src/website/src/components/sections/AirQualityBillboard/components/ErrorDisplay.tsx
  • src/website/src/components/sections/AirQualityBillboard/hooks/useAirQualityData.ts
  • src/website/src/components/sections/AirQualityBillboard/hooks/useMeasurements.ts
  • src/website/src/components/sections/AirQualityBillboard/utils.ts
  • src/website/src/components/sections/MediaContentSection.tsx
  • src/website/src/components/sections/PaginatedSection.tsx
  • src/website/src/components/sections/solutions/GridAirQualityMonitor.tsx
  • src/website/src/components/ui/CustomButton.tsx
  • src/website/src/components/ui/ErrorBoundary.tsx
  • src/website/src/components/ui/ForumLoading.tsx
  • src/website/src/components/ui/dialog.tsx
  • src/website/src/components/ui/dropdown-menu.tsx
  • src/website/src/components/ui/index.ts
  • src/website/src/components/ui/navigation-menu.tsx
  • src/website/src/config/__tests__/env.config.test.ts
  • src/website/src/config/__tests__/navigation.config.test.ts
  • src/website/src/config/__tests__/packages.config.test.ts
  • src/website/src/config/__tests__/routes.config.test.ts
  • src/website/src/config/__tests__/site.config.test.ts
  • src/website/src/config/env.config.ts
  • src/website/src/config/images.config.ts
  • src/website/src/config/navigation.config.ts
  • src/website/src/config/packages.config.ts
  • src/website/src/config/routes.config.ts
  • src/website/src/config/seo.config.ts
  • src/website/src/config/site.config.ts
  • src/website/src/configs/mainConfigs.ts
  • src/website/src/features/about/AboutPage.tsx
  • src/website/src/features/blogs/BlogDetailPage.tsx
  • src/website/src/features/blogs/BlogsPage.tsx
  • src/website/src/features/blogs/blogUtils.ts
  • src/website/src/features/careers/CareerPage.tsx
  • src/website/src/features/careers/DetailsPage.tsx
  • src/website/src/features/clean-air-forum/ForumEventsPage.tsx
  • src/website/src/features/clean-air-forum/about/AboutPage.tsx
  • src/website/src/features/clean-air-forum/components/BannerSection.tsx
  • src/website/src/features/clean-air-forum/components/ForumHero.tsx
  • src/website/src/features/clean-air-forum/components/SectionDisplay.tsx
  • src/website/src/features/clean-air-forum/components/TabNavigation.tsx
  • src/website/src/features/clean-air-forum/glossary/GlossaryPage.tsx
  • src/website/src/features/clean-air-forum/logistics/LogisticsPage.tsx
  • src/website/src/features/clean-air-forum/partners/PartnersPage.tsx
  • src/website/src/features/clean-air-forum/program-committee/CommitteePage.tsx
  • src/website/src/features/clean-air-forum/resources/ResourcesPage.tsx
  • src/website/src/features/clean-air-forum/sessions-programs/ProgramsPage.tsx
  • src/website/src/features/clean-air-forum/speakers/SpeakersPage.tsx
  • src/website/src/features/clean-air-forum/sponsorship/SponsorshipPage.tsx
  • src/website/src/features/clean-air-network/PaginatedSection.tsx
  • src/website/src/features/clean-air-network/index.ts
  • src/website/src/features/contact/ContactPage.tsx
  • src/website/src/features/contact/components/FormPage.tsx
  • src/website/src/features/contact/components/SuccessPage.tsx
  • src/website/src/features/contact/index.ts
  • src/website/src/features/developers/airqo-devcon/AirQoDevConPage.tsx
  • src/website/src/features/developers/airqo-devcon/CountdownTimer.tsx
  • src/website/src/features/events/EventCardsSection.tsx
  • src/website/src/features/events/EventPage.tsx
  • src/website/src/features/events/SingleEvent.tsx
  • src/website/src/features/explore-data/ExplorePage.tsx
  • src/website/src/features/faqs/FAQPage.tsx
  • src/website/src/features/faqs/index.ts
  • src/website/src/features/home/Accordion.tsx
  • src/website/src/features/home/AnalyticsContentSection.tsx
  • src/website/src/features/home/AppDownloadSection.tsx
  • src/website/src/features/home/FeaturedCarousel.tsx
  • src/website/src/features/home/HomeDeferredSections.tsx
  • src/website/src/features/home/HomeDevConSection.tsx
  • src/website/src/features/home/HomePage.tsx
  • src/website/src/features/home/HomePlayerSection.tsx
  • src/website/src/features/home/HomeStatsSection.tsx
  • src/website/src/features/home/data.ts
  • src/website/src/features/legal/AirQoDataPage.tsx
  • src/website/src/features/legal/CookiesPolicyPage.tsx
  • src/website/src/features/legal/PP_Page.tsx
  • src/website/src/features/legal/PRP_Page.tsx
  • src/website/src/features/legal/TOSPage.tsx
  • src/website/src/features/legal/Tabsection.tsx
  • src/website/src/features/packages/IconsPackageBrowser.tsx
  • src/website/src/features/packages/IconsPackageBrowserLoader.tsx
  • src/website/src/features/packages/IconsPackagePage.tsx
  • src/website/src/features/packages/PackagesPage.tsx
  • src/website/src/features/packages/icons/docs/IconsDocsContent.tsx
  • src/website/src/features/packages/icons/docs/IconsDocsContentLoader.tsx
  • src/website/src/features/packages/icons/docs/IconsDocsPage.tsx
  • src/website/src/features/packages/icons/docs/index.ts
  • src/website/src/features/packages/icons/docs/sections/ApiReferenceSection.tsx
  • src/website/src/features/packages/icons/docs/sections/FlutterSection.tsx
  • src/website/src/features/packages/icons/docs/sections/InstallationSection.tsx
  • src/website/src/features/packages/icons/docs/sections/QuickStartSection.tsx
  • src/website/src/features/packages/icons/docs/sections/StylingSection.tsx
  • src/website/src/features/packages/icons/docs/sections/TypeScriptSection.tsx
  • src/website/src/features/packages/icons/docs/sections/UtilitiesSection.tsx
  • src/website/src/features/packages/icons/docs/sections/VueSection.tsx
  • src/website/src/features/packages/index.ts
  • src/website/src/features/partners/PartnersPage.tsx
  • src/website/src/features/partners/index.ts
  • src/website/src/features/press/PressPage.tsx
  • src/website/src/features/press/index.ts
  • src/website/src/features/products/AIPlatformPage.tsx
  • src/website/src/features/products/AnalyticsPage.tsx
  • src/website/src/features/products/ApiPage.tsx
  • src/website/src/features/products/BeaconPage.tsx
  • src/website/src/features/products/CalibratePage.tsx
  • src/website/src/features/products/MobilePage.tsx
  • src/website/src/features/products/MonitorPage.tsx
  • src/website/src/features/products/ProductMarketingPage.tsx
  • src/website/src/features/products/VertexPage.tsx
  • src/website/src/features/resources/ResourcePage.tsx
  • src/website/src/features/resources/index.ts
  • src/website/src/features/solutions/african-cities/AfricanCities.tsx
  • src/website/src/features/solutions/african-cities/AfricanCityPage.tsx
  • src/website/src/features/solutions/communities/CommunityPage.tsx
  • src/website/src/features/solutions/kampala-study/KampalaStudyPage.tsx
  • src/website/src/features/solutions/kampala-study/index.ts
  • src/website/src/features/solutions/network-coverage/NetworkCoverageDeferred.tsx
  • src/website/src/features/solutions/network-coverage/NetworkCoveragePageApi.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageAddMonitorDialog.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageAddToNetworkDialog.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageHeader.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageLegend.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageMap.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageNavDrawer.tsx
  • src/website/src/features/solutions/network-coverage/components/NetworkCoverageSidebar.tsx
  • src/website/src/features/solutions/network-coverage/components/map/MonitorNode.tsx
  • src/website/src/features/solutions/network-coverage/index.ts
  • src/website/src/features/solutions/network-coverage/networkCoverageTypes.ts
  • src/website/src/features/solutions/network-coverage/utils/exportUtils.ts
  • src/website/src/features/solutions/research/ResearchPage.tsx
  • src/website/src/features/solutions/research/data-access.tsx
  • src/website/src/features/solutions/research/fellowship-section.tsx
  • src/website/src/features/solutions/research/platform-integration.tsx
  • src/website/src/hooks/__tests__/reduxHooks.test.ts
  • src/website/src/hooks/__tests__/useLockBodyScroll.test.ts
  • src/website/src/hooks/__tests__/useResourceFilter.test.ts
  • src/website/src/hooks/__tests__/useTranslationSafety.test.ts
  • src/website/src/hooks/endpointsNew.ts
  • src/website/src/hooks/index.ts
  • src/website/src/hooks/reduxHooks.ts
  • src/website/src/hooks/useApiHooks.tsx
  • src/website/src/hooks/useTranslationSafety.ts
  • src/website/src/lib/__tests__/environmentAwareUrl.test.ts
  • src/website/src/lib/__tests__/logger.test.ts
  • src/website/src/lib/__tests__/siteUrl.test.ts
  • src/website/src/lib/analytics/events.ts
  • src/website/src/lib/analytics/ga.ts
  • src/website/src/lib/analytics/index.ts
  • src/website/src/lib/metadata/generateMetadata.ts
  • src/website/src/lib/metadata/generateViewport.ts
  • src/website/src/lib/metadata/index.ts
  • src/website/src/lib/metadata/metadata.config.ts
  • src/website/src/lib/metadata/pageMetadata.ts
  • src/website/src/lib/metadata/structuredData.ts
  • src/website/src/lib/security/__tests__/safeExternalLink.test.ts
  • src/website/src/lib/security/__tests__/sanitizeHtml.test.ts
  • src/website/src/lib/security/index.ts
  • src/website/src/lib/security/safeExternalLink.ts
  • src/website/src/lib/security/sanitizeHtml.ts
  • src/website/src/lib/utils.ts
  • src/website/src/lib/utils/__tests__/airQuality.test.ts
  • src/website/src/lib/utils/__tests__/calendarUtils.test.ts
  • src/website/src/lib/utils/__tests__/cn.test.ts
  • src/website/src/lib/utils/__tests__/cookieConsent.test.ts
  • src/website/src/lib/utils/__tests__/errors.test.ts
  • src/website/src/lib/utils/__tests__/formatDate.test.ts
  • src/website/src/lib/utils/__tests__/forumDataNormalizer.test.ts
  • src/website/src/lib/utils/__tests__/glossaryValidator.test.ts
  • src/website/src/lib/utils/__tests__/htmlValidator.test.ts
  • src/website/src/lib/utils/__tests__/languages.test.ts
  • src/website/src/lib/utils/__tests__/listResponseNormalizer.test.ts
  • src/website/src/lib/utils/__tests__/quillUtils.test.ts
  • src/website/src/lib/utils/__tests__/removeTrailingSlash.test.ts
  • src/website/src/lib/utils/__tests__/slugify.test.ts
  • src/website/src/lib/utils/__tests__/storageUtils.test.ts
  • src/website/src/lib/utils/__tests__/string-utils.test.ts
  • src/website/src/lib/utils/airQuality.ts
  • src/website/src/lib/utils/calendarUtils.ts
  • src/website/src/lib/utils/cn.ts
  • src/website/src/lib/utils/cookieConsent.ts
  • src/website/src/lib/utils/errors.ts
  • src/website/src/lib/utils/formatDate.ts
  • src/website/src/lib/utils/forumDataNormalizer.ts
  • src/website/src/lib/utils/glossaryValidator.ts
  • src/website/src/lib/utils/googleTranslate.ts
  • src/website/src/lib/utils/htmlValidator.ts
  • src/website/src/lib/utils/index.ts
  • src/website/src/lib/utils/languages.ts
  • src/website/src/lib/utils/listResponseNormalizer.ts
  • src/website/src/lib/utils/logger.ts
  • src/website/src/lib/utils/quillUtils.ts
  • src/website/src/lib/utils/removeTrailingSlash.ts
  • src/website/src/lib/utils/slugify.ts
  • src/website/src/lib/utils/storageUtils.ts
  • src/website/src/lib/utils/string-utils.ts
  • src/website/src/queries/__tests__/query-keys.test.ts
  • src/website/src/queries/blogs.queries.ts
  • src/website/src/queries/careers.queries.ts
  • src/website/src/queries/events.queries.ts
  • src/website/src/queries/forum.queries.ts
  • src/website/src/queries/index.ts
  • src/website/src/queries/network-coverage.queries.ts
  • src/website/src/queries/partners.queries.ts
  • src/website/src/queries/query-client.ts
  • src/website/src/queries/query-keys.ts
  • src/website/src/queries/team.queries.ts
  • src/website/src/services/api/__tests__/api-routes.test.ts
  • src/website/src/services/api/__tests__/base.test.ts
  • src/website/src/services/api/api-client.ts
  • src/website/src/services/api/api-error.ts
  • src/website/src/services/api/api-response.ts
  • src/website/src/services/api/api-routes.ts
  • src/website/src/services/api/base.ts
  • src/website/src/services/api/index.ts
  • src/website/src/services/apiService/index.ts
  • src/website/src/services/base.ts
  • src/website/src/services/external/analytics.service.ts
  • src/website/src/services/external/cloudinary.service.ts
  • src/website/src/services/external/index.ts
  • src/website/src/services/external/maps.service.ts
  • src/website/src/services/website/africanCountries.ts
  • src/website/src/services/website/blogs.service.ts
  • src/website/src/services/website/boardMembers.ts
  • src/website/src/services/website/careers.service.ts
  • src/website/src/services/website/cleanAirResources.ts
  • src/website/src/services/website/departments.ts
  • src/website/src/services/website/events.service.ts
  • src/website/src/services/website/faqs.service.ts
  • src/website/src/services/website/forum-events.service.ts
  • src/website/src/services/website/grids.ts
  • src/website/src/services/website/highlights.ts
  • src/website/src/services/website/impact.service.ts
  • src/website/src/services/website/index.ts
  • src/website/src/services/website/network-coverage.service.ts
  • src/website/src/services/website/partners.service.ts
  • src/website/src/services/website/payments.ts
  • src/website/src/services/website/predict.ts
  • src/website/src/services/website/press.service.ts
  • src/website/src/services/website/publications.service.ts
  • src/website/src/services/website/team.service.ts
  • src/website/src/store/slices/__tests__/countrySlice.test.ts
  • src/website/src/store/slices/__tests__/forumSlice.test.ts
  • src/website/src/store/slices/__tests__/modalSlice.test.ts
  • src/website/src/store/slices/countrySlice.ts
  • src/website/src/store/slices/modalSlice.ts
  • src/website/src/styles/theme.css
  • src/website/src/styles/typography.css
  • src/website/src/styles/utilities.css
  • src/website/src/types/api.ts
  • src/website/src/types/forum.ts
  • src/website/src/types/index.ts
  • src/website/src/utils/index.ts
  • src/website/src/views/blogs/BlogDetailPage.tsx
  • src/website/src/views/blogs/BlogsPage.tsx
  • src/website/src/views/developers/airqo-devcon/AirQoDevConPage.tsx
  • src/website/src/views/packages/IconsPackagePage.tsx
  • src/website/tailwind.config.ts
  • src/website/tsconfig.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch web-unit-test

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

New azure website changes available for preview here

@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 65.69%. Comparing base (c90de35) to head (bc5a4f7).
⚠️ Report is 12 commits behind head on staging.

Additional details and impacted files
Flag Coverage Δ
website 82.55% <100.00%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

@@             Coverage Diff              @@
##           staging    #3758       +/-   ##
============================================
+ Coverage    53.38%   65.69%   +12.30%     
============================================
  Files          112      156       +44     
  Lines         4516     7812     +3296     
  Branches      1473     1918      +445     
============================================
+ Hits          2411     5132     +2721     
- Misses        2105     2620      +515     
- Partials         0       60       +60     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@OchiengPaul442
OchiengPaul442 requested a review from Baalmart July 7, 2026 11:51
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

New azure website changes available for preview here

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

New azure website changes available for preview here

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

@Baalmart
Baalmart merged commit 147bbd3 into staging Jul 7, 2026
28 checks passed
@Baalmart
Baalmart deleted the web-unit-test branch July 7, 2026 12:15
@Baalmart Baalmart mentioned this pull request Jul 7, 2026
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants