import React from "react"; import { render, screen } from "@testing-library/react"; import { COLORS } from "styles/var/colors"; import ProgressBar from "./ProgressBar"; describe("ProgressBar component", () => { it("renders with the correct sections and colors", () => { const sections = [ { color: "green", portion: 0.7 }, { color: "red", portion: 0.1 }, ]; render(); const progressBar = screen.getByRole("progressbar"); expect(progressBar).toBeInTheDocument(); expect(progressBar).toHaveStyle({ backgroundColor: COLORS["ui-fleet-black-10"], }); const sectionElements = screen.getAllByTestId(/section-/); expect(sectionElements.length).toBe(2); // On CI, the rgb representation is used, while locally // it seems to use the named color. try { expect(sectionElements[0]).toHaveStyle( "background-color: rgb(0, 128, 0)" ); } catch (error) { expect(sectionElements[0]).toHaveStyle("background-color: green"); } expect(sectionElements[0]).toHaveStyle("width: 70%"); // Check second section try { expect(sectionElements[1]).toHaveStyle( "background-color: rgb(255, 0, 0)" ); } catch (error) { expect(sectionElements[1]).toHaveStyle("background-color: red"); } expect(sectionElements[1]).toHaveStyle("width: 10%"); }); it("applies custom background color when provided", () => { const sections = [{ color: "green", portion: 0.5 }]; const customBgColor = "blue"; render(); const progressBar = screen.getByRole("progressbar"); try { expect(progressBar).toHaveStyle(`background-color: rgb(0, 0, 255)`); } catch (error) { expect(progressBar).toHaveStyle(`background-color: ${customBgColor}`); } }); });