diff --git a/client/src/App.test.tsx b/client/src/App.test.tsx index 2a68616d..b20568d2 100644 --- a/client/src/App.test.tsx +++ b/client/src/App.test.tsx @@ -1,8 +1,8 @@ -import React from 'react'; -import { render, screen } from '@testing-library/react'; -import App from './App'; +import App from "./App"; +import { render, screen } from "@testing-library/react"; +import React from "react"; -test('renders learn react link', () => { +test("renders learn react link", () => { render(); const linkElement = screen.getByText(/learn react/i); expect(linkElement).toBeInTheDocument(); diff --git a/client/src/App.tsx b/client/src/App.tsx index fa02163a..d5fb269a 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -1,7 +1,7 @@ -import { LatLng } from "leaflet"; import LiberationMap from "./components/liberationmap"; import useEventStream from "./hooks/useEventSteam"; import useInitialGameState from "./hooks/useInitialGameState"; +import { LatLng } from "leaflet"; function App() { const mapCenter: LatLng = new LatLng(25.58, 54.9); diff --git a/client/src/api/controlPointsSlice.ts b/client/src/api/controlPointsSlice.ts index c1899087..15cd8d96 100644 --- a/client/src/api/controlPointsSlice.ts +++ b/client/src/api/controlPointsSlice.ts @@ -1,7 +1,6 @@ -import { PayloadAction, createSlice } from "@reduxjs/toolkit"; - -import { ControlPoint } from "./controlpoint"; import { RootState } from "../app/store"; +import { ControlPoint } from "./controlpoint"; +import { PayloadAction, createSlice } from "@reduxjs/toolkit"; interface ControlPointsState { controlPoints: { [key: number]: ControlPoint }; diff --git a/client/src/api/eventstream.tsx b/client/src/api/eventstream.tsx index 41712642..72fa2790 100644 --- a/client/src/api/eventstream.tsx +++ b/client/src/api/eventstream.tsx @@ -1,14 +1,13 @@ -import { deselectFlight, selectFlight } from "./flightsSlice"; - import { AppDispatch } from "../app/store"; -import { ControlPoint } from "./controlpoint"; -import { Flight } from "./flight"; -import FrontLine from "./frontline"; -import { LatLng } from "leaflet"; -import Tgo from "./tgo"; import backend from "./backend"; import { updateControlPoint } from "./controlPointsSlice"; +import { ControlPoint } from "./controlpoint"; +import { Flight } from "./flight"; +import { deselectFlight, selectFlight } from "./flightsSlice"; +import FrontLine from "./frontline"; +import Tgo from "./tgo"; import { updateTgo } from "./tgosSlice"; +import { LatLng } from "leaflet"; // Placeholder. We don't use this yet. This is just here so we can flesh out the // update events model. diff --git a/client/src/api/flight.ts b/client/src/api/flight.ts index 5ad0fa08..ac5933b9 100644 --- a/client/src/api/flight.ts +++ b/client/src/api/flight.ts @@ -1,5 +1,5 @@ -import { LatLng } from "leaflet"; import { Waypoint } from "./waypoint"; +import { LatLng } from "leaflet"; export interface Flight { id: string; diff --git a/client/src/api/flightsSlice.ts b/client/src/api/flightsSlice.ts index 3897c3cb..c8c3c796 100644 --- a/client/src/api/flightsSlice.ts +++ b/client/src/api/flightsSlice.ts @@ -1,7 +1,6 @@ -import { PayloadAction, createSlice } from "@reduxjs/toolkit"; - -import { Flight } from "./flight"; import { RootState } from "../app/store"; +import { Flight } from "./flight"; +import { PayloadAction, createSlice } from "@reduxjs/toolkit"; interface FlightsState { blue: { [id: string]: Flight }; diff --git a/client/src/api/frontLinesSlice.ts b/client/src/api/frontLinesSlice.ts index a04dc1c8..a55ec36f 100644 --- a/client/src/api/frontLinesSlice.ts +++ b/client/src/api/frontLinesSlice.ts @@ -1,7 +1,6 @@ -import { PayloadAction, createSlice } from "@reduxjs/toolkit"; - -import FrontLine from "./frontline"; import { RootState } from "../app/store"; +import FrontLine from "./frontline"; +import { PayloadAction, createSlice } from "@reduxjs/toolkit"; interface FrontLinesState { fronts: FrontLine[]; diff --git a/client/src/api/supplyRoutesSlice.ts b/client/src/api/supplyRoutesSlice.ts index a829e17d..da228987 100644 --- a/client/src/api/supplyRoutesSlice.ts +++ b/client/src/api/supplyRoutesSlice.ts @@ -1,7 +1,6 @@ -import { PayloadAction, createSlice } from "@reduxjs/toolkit"; - import { RootState } from "../app/store"; import SupplyRoute from "./supplyroute"; +import { PayloadAction, createSlice } from "@reduxjs/toolkit"; interface SupplyRoutesState { routes: SupplyRoute[]; diff --git a/client/src/api/tgosSlice.ts b/client/src/api/tgosSlice.ts index aa437a10..fa17a184 100644 --- a/client/src/api/tgosSlice.ts +++ b/client/src/api/tgosSlice.ts @@ -1,7 +1,6 @@ -import { PayloadAction, createSlice } from "@reduxjs/toolkit"; - import { RootState } from "../app/store"; import { Tgo } from "./tgo"; +import { PayloadAction, createSlice } from "@reduxjs/toolkit"; interface TgosState { tgos: { [key: string]: Tgo }; diff --git a/client/src/app/hooks.ts b/client/src/app/hooks.ts index 36b5ea2f..3a3cf12f 100644 --- a/client/src/app/hooks.ts +++ b/client/src/app/hooks.ts @@ -1,5 +1,5 @@ -import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; import type { RootState, AppDispatch } from "./store"; +import { TypedUseSelectorHook, useDispatch, useSelector } from "react-redux"; // Use throughout your app instead of plain `useDispatch` and `useSelector` export const useAppDispatch = () => useDispatch(); diff --git a/client/src/app/store.ts b/client/src/app/store.ts index 4fe1f8ad..0bbd9173 100644 --- a/client/src/app/store.ts +++ b/client/src/app/store.ts @@ -1,10 +1,9 @@ -import { Action, ThunkAction, configureStore } from "@reduxjs/toolkit"; - import controlPointsReducer from "../api/controlPointsSlice"; import flightsReducer from "../api/flightsSlice"; import frontLinesReducer from "../api/frontLinesSlice"; import supplyRoutesReducer from "../api/supplyRoutesSlice"; import tgosReducer from "../api/tgosSlice"; +import { Action, ThunkAction, configureStore } from "@reduxjs/toolkit"; export const store = configureStore({ reducer: { diff --git a/client/src/components/airdefenserangelayer/AirDefenseRangeLayer.tsx b/client/src/components/airdefenserangelayer/AirDefenseRangeLayer.tsx index 63244a01..fa3d2482 100644 --- a/client/src/components/airdefenserangelayer/AirDefenseRangeLayer.tsx +++ b/client/src/components/airdefenserangelayer/AirDefenseRangeLayer.tsx @@ -1,8 +1,7 @@ -import { Circle, LayerGroup } from "react-leaflet"; - import Tgo from "../../api/tgo"; import { selectTgos } from "../../api/tgosSlice"; import { useAppSelector } from "../../app/hooks"; +import { Circle, LayerGroup } from "react-leaflet"; interface TgoRangeCirclesProps { tgo: Tgo; diff --git a/client/src/components/controlpoints/ControlPoint.tsx b/client/src/components/controlpoints/ControlPoint.tsx index a35800da..42cdd767 100644 --- a/client/src/components/controlpoints/ControlPoint.tsx +++ b/client/src/components/controlpoints/ControlPoint.tsx @@ -1,9 +1,8 @@ -import { Icon, Point } from "leaflet"; -import { Marker, Tooltip } from "react-leaflet"; - -import { ControlPoint as ControlPointModel } from "../../api/controlpoint"; -import { Symbol as MilSymbol } from "milsymbol"; import backend from "../../api/backend"; +import { ControlPoint as ControlPointModel } from "../../api/controlpoint"; +import { Icon, Point } from "leaflet"; +import { Symbol as MilSymbol } from "milsymbol"; +import { Marker, Tooltip } from "react-leaflet"; function iconForControlPoint(cp: ControlPointModel) { const symbol = new MilSymbol(cp.sidc, { diff --git a/client/src/components/controlpointslayer/ControlPointsLayer.tsx b/client/src/components/controlpointslayer/ControlPointsLayer.tsx index 9e2a2a7a..cea477ee 100644 --- a/client/src/components/controlpointslayer/ControlPointsLayer.tsx +++ b/client/src/components/controlpointslayer/ControlPointsLayer.tsx @@ -1,7 +1,7 @@ -import ControlPoint from "../controlpoints"; -import { LayerGroup } from "react-leaflet"; import { selectControlPoints } from "../../api/controlPointsSlice"; import { useAppSelector } from "../../app/hooks"; +import ControlPoint from "../controlpoints"; +import { LayerGroup } from "react-leaflet"; export default function ControlPointsLayer() { const controlPoints = useAppSelector(selectControlPoints); diff --git a/client/src/components/flightplan/FlightPlan.tsx b/client/src/components/flightplan/FlightPlan.tsx index 7fb5cf6c..6075437f 100644 --- a/client/src/components/flightplan/FlightPlan.tsx +++ b/client/src/components/flightplan/FlightPlan.tsx @@ -1,6 +1,6 @@ import { Flight } from "../../api/flight"; -import { Polyline } from "react-leaflet"; import WaypointMarker from "../waypointmarker"; +import { Polyline } from "react-leaflet"; const BLUE_PATH = "#0084ff"; const RED_PATH = "#c85050"; diff --git a/client/src/components/flightplanslayer/FlightPlansLayer.tsx b/client/src/components/flightplanslayer/FlightPlansLayer.tsx index 253d7454..9cb961e8 100644 --- a/client/src/components/flightplanslayer/FlightPlansLayer.tsx +++ b/client/src/components/flightplanslayer/FlightPlansLayer.tsx @@ -1,8 +1,8 @@ import { Flight } from "../../api/flight"; -import FlightPlan from "../flightplan"; -import { LayerGroup } from "react-leaflet"; import { selectFlights } from "../../api/flightsSlice"; import { useAppSelector } from "../../app/hooks"; +import FlightPlan from "../flightplan"; +import { LayerGroup } from "react-leaflet"; interface FlightPlansLayerProps { blue: boolean; diff --git a/client/src/components/frontlineslayer/FrontLinesLayer.tsx b/client/src/components/frontlineslayer/FrontLinesLayer.tsx index b071aa9a..feed0713 100644 --- a/client/src/components/frontlineslayer/FrontLinesLayer.tsx +++ b/client/src/components/frontlineslayer/FrontLinesLayer.tsx @@ -1,7 +1,7 @@ -import FrontLine from "../frontline"; -import { LayerGroup } from "react-leaflet"; import { selectFrontLines } from "../../api/frontLinesSlice"; import { useAppSelector } from "../../app/hooks"; +import FrontLine from "../frontline"; +import { LayerGroup } from "react-leaflet"; export default function SupplyRoutesLayer() { const fronts = useAppSelector(selectFrontLines).fronts; diff --git a/client/src/components/liberationmap/LiberationMap.tsx b/client/src/components/liberationmap/LiberationMap.tsx index a56af8c7..e5def583 100644 --- a/client/src/components/liberationmap/LiberationMap.tsx +++ b/client/src/components/liberationmap/LiberationMap.tsx @@ -1,15 +1,13 @@ -import "./LiberationMap.css"; - -import { LayersControl, MapContainer, ScaleControl } from "react-leaflet"; - import AirDefenseRangeLayer from "../airdefenserangelayer"; -import { BasemapLayer } from "react-esri-leaflet"; import ControlPointsLayer from "../controlpointslayer"; import FlightPlansLayer from "../flightplanslayer"; import FrontLinesLayer from "../frontlineslayer"; -import { LatLng } from "leaflet"; import SupplyRoutesLayer from "../supplyrouteslayer"; import TgosLayer from "../tgoslayer/TgosLayer"; +import "./LiberationMap.css"; +import { LatLng } from "leaflet"; +import { BasemapLayer } from "react-esri-leaflet"; +import { LayersControl, MapContainer, ScaleControl } from "react-leaflet"; interface GameProps { mapCenter: LatLng; diff --git a/client/src/components/socketprovider/socketprovider.tsx b/client/src/components/socketprovider/socketprovider.tsx index 43c9e9e4..c43db80e 100644 --- a/client/src/components/socketprovider/socketprovider.tsx +++ b/client/src/components/socketprovider/socketprovider.tsx @@ -1,8 +1,6 @@ // Based on https://thenable.io/building-a-use-socket-hook-in-react. - -import { ReactChild, createContext, useEffect, useState } from "react"; - import { WEBSOCKET_URL } from "../../api/backend"; +import { ReactChild, createContext, useEffect, useState } from "react"; const socket = new WebSocket(WEBSOCKET_URL); diff --git a/client/src/components/supplyroute/SupplyRoute.tsx b/client/src/components/supplyroute/SupplyRoute.tsx index ab341a8e..92898817 100644 --- a/client/src/components/supplyroute/SupplyRoute.tsx +++ b/client/src/components/supplyroute/SupplyRoute.tsx @@ -1,9 +1,8 @@ -import { Polyline, Tooltip } from "react-leaflet"; -import { useEffect, useRef } from "react"; - -import { Polyline as LPolyline } from "leaflet"; -import SplitLines from "../splitlines/SplitLines"; import { SupplyRoute as SupplyRouteModel } from "../../api/supplyroute"; +import SplitLines from "../splitlines/SplitLines"; +import { Polyline as LPolyline } from "leaflet"; +import { useEffect, useRef } from "react"; +import { Polyline, Tooltip } from "react-leaflet"; interface SupplyRouteProps { route: SupplyRouteModel; diff --git a/client/src/components/supplyrouteslayer/SupplyRoutesLayer.tsx b/client/src/components/supplyrouteslayer/SupplyRoutesLayer.tsx index 99f6e979..d4ecc556 100644 --- a/client/src/components/supplyrouteslayer/SupplyRoutesLayer.tsx +++ b/client/src/components/supplyrouteslayer/SupplyRoutesLayer.tsx @@ -1,7 +1,7 @@ -import { LayerGroup } from "react-leaflet"; -import SupplyRoute from "../supplyroute/SupplyRoute"; import { selectSupplyRoutes } from "../../api/supplyRoutesSlice"; import { useAppSelector } from "../../app/hooks"; +import SupplyRoute from "../supplyroute/SupplyRoute"; +import { LayerGroup } from "react-leaflet"; export default function SupplyRoutesLayer() { const routes = useAppSelector(selectSupplyRoutes).routes; diff --git a/client/src/components/tgos/Tgo.tsx b/client/src/components/tgos/Tgo.tsx index 68d73cb9..c9ce13fa 100644 --- a/client/src/components/tgos/Tgo.tsx +++ b/client/src/components/tgos/Tgo.tsx @@ -1,9 +1,8 @@ -import { Icon, Point } from "leaflet"; -import { Marker, Tooltip } from "react-leaflet"; - -import { Symbol as MilSymbol } from "milsymbol"; -import SplitLines from "../splitlines/SplitLines"; import { Tgo as TgoModel } from "../../api/tgo"; +import SplitLines from "../splitlines/SplitLines"; +import { Icon, Point } from "leaflet"; +import { Symbol as MilSymbol } from "milsymbol"; +import { Marker, Tooltip } from "react-leaflet"; function iconForTgo(cp: TgoModel) { const symbol = new MilSymbol(cp.sidc, { diff --git a/client/src/components/tgoslayer/TgosLayer.tsx b/client/src/components/tgoslayer/TgosLayer.tsx index eff9708d..3c8785e7 100644 --- a/client/src/components/tgoslayer/TgosLayer.tsx +++ b/client/src/components/tgoslayer/TgosLayer.tsx @@ -1,7 +1,7 @@ -import { LayerGroup } from "react-leaflet"; -import Tgo from "../tgos/Tgo"; import { selectTgos } from "../../api/tgosSlice"; import { useAppSelector } from "../../app/hooks"; +import Tgo from "../tgos/Tgo"; +import { LayerGroup } from "react-leaflet"; interface TgosLayerProps { categories?: string[]; diff --git a/client/src/components/waypointmarker/WaypointMarker.tsx b/client/src/components/waypointmarker/WaypointMarker.tsx index ae136f2e..28b30008 100644 --- a/client/src/components/waypointmarker/WaypointMarker.tsx +++ b/client/src/components/waypointmarker/WaypointMarker.tsx @@ -1,11 +1,10 @@ -import { Marker, Tooltip, useMap, useMapEvent } from "react-leaflet"; -import { MutableRefObject, useCallback, useRef } from "react"; - +import { Waypoint } from "../../api/waypoint"; import { Icon } from "leaflet"; import { Marker as LMarker } from "leaflet"; -import { Waypoint } from "../../api/waypoint"; import icon from "leaflet/dist/images/marker-icon.png"; import iconShadow from "leaflet/dist/images/marker-shadow.png"; +import { MutableRefObject, useCallback, useRef } from "react"; +import { Marker, Tooltip, useMap, useMapEvent } from "react-leaflet"; const WAYPOINT_ICON = new Icon({ iconUrl: icon, diff --git a/client/src/hooks/useEventSteam.ts b/client/src/hooks/useEventSteam.ts index 1545d2e8..f37c36b6 100644 --- a/client/src/hooks/useEventSteam.ts +++ b/client/src/hooks/useEventSteam.ts @@ -1,8 +1,7 @@ -import { useCallback, useEffect } from "react"; - import { handleStreamedEvents } from "../api/eventstream"; import { useAppDispatch } from "../app/hooks"; import { useSocket } from "./useSocket"; +import { useCallback, useEffect } from "react"; export const useEventStream = () => { const ws = useSocket(); diff --git a/client/src/hooks/useInitialGameState.tsx b/client/src/hooks/useInitialGameState.tsx index cda2706b..9ea24d63 100644 --- a/client/src/hooks/useInitialGameState.tsx +++ b/client/src/hooks/useInitialGameState.tsx @@ -1,13 +1,13 @@ +import backend from "../api/backend"; +import { setControlPoints } from "../api/controlPointsSlice"; import { ControlPoint } from "../api/controlpoint"; import { Flight } from "../api/flight"; +import { registerFlight } from "../api/flightsSlice"; +import { setFrontLines } from "../api/frontLinesSlice"; import FrontLine from "../api/frontline"; +import { setSupplyRoutes } from "../api/supplyRoutesSlice"; import SupplyRoute from "../api/supplyroute"; import Tgo from "../api/tgo"; -import backend from "../api/backend"; -import { registerFlight } from "../api/flightsSlice"; -import { setControlPoints } from "../api/controlPointsSlice"; -import { setFrontLines } from "../api/frontLinesSlice"; -import { setSupplyRoutes } from "../api/supplyRoutesSlice"; import { setTgos } from "../api/tgosSlice"; import { useAppDispatch } from "../app/hooks"; import { useEffect } from "react"; diff --git a/client/src/index.css b/client/src/index.css index ec2585e8..4a1df4db 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -1,13 +1,13 @@ body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } diff --git a/client/src/index.tsx b/client/src/index.tsx index 5e231cac..19e61f3d 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -1,13 +1,11 @@ -import "./index.css"; - -import * as serviceWorker from "./serviceWorker"; - import App from "./App"; -import { Provider } from "react-redux"; +import { store } from "./app/store"; +import { SocketProvider } from "./components/socketprovider/socketprovider"; +import "./index.css"; +import * as serviceWorker from "./serviceWorker"; import React from "react"; import ReactDOM from "react-dom"; -import { SocketProvider } from "./components/socketprovider/socketprovider"; -import { store } from "./app/store"; +import { Provider } from "react-redux"; ReactDOM.render( diff --git a/client/src/serviceWorker.ts b/client/src/serviceWorker.ts index b72854a3..e7b8199e 100644 --- a/client/src/serviceWorker.ts +++ b/client/src/serviceWorker.ts @@ -11,9 +11,9 @@ // opt-in, read https://bit.ly/CRA-PWA const isLocalhost = Boolean( - window.location.hostname === 'localhost' || + window.location.hostname === "localhost" || // [::1] is the IPv6 localhost address. - window.location.hostname === '[::1]' || + window.location.hostname === "[::1]" || // 127.0.0.0/8 are considered localhost for IPv4. window.location.hostname.match( /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/ @@ -26,7 +26,7 @@ type Config = { }; export function register(config?: Config) { - if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) { + if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator) { // The URL constructor is available in all browsers that support SW. const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href); if (publicUrl.origin !== window.location.origin) { @@ -36,7 +36,7 @@ export function register(config?: Config) { return; } - window.addEventListener('load', () => { + window.addEventListener("load", () => { const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; if (isLocalhost) { @@ -47,8 +47,8 @@ export function register(config?: Config) { // service worker/PWA documentation. navigator.serviceWorker.ready.then(() => { console.log( - 'This web app is being served cache-first by a service ' + - 'worker. To learn more, visit https://bit.ly/CRA-PWA' + "This web app is being served cache-first by a service " + + "worker. To learn more, visit https://bit.ly/CRA-PWA" ); }); } else { @@ -69,14 +69,14 @@ function registerValidSW(swUrl: string, config?: Config) { return; } installingWorker.onstatechange = () => { - if (installingWorker.state === 'installed') { + if (installingWorker.state === "installed") { if (navigator.serviceWorker.controller) { // At this point, the updated precached content has been fetched, // but the previous service worker will still serve the older // content until all client tabs are closed. console.log( - 'New content is available and will be used when all ' + - 'tabs for this page are closed. See https://bit.ly/CRA-PWA.' + "New content is available and will be used when all " + + "tabs for this page are closed. See https://bit.ly/CRA-PWA." ); // Execute callback @@ -87,7 +87,7 @@ function registerValidSW(swUrl: string, config?: Config) { // At this point, everything has been precached. // It's the perfect time to display a // "Content is cached for offline use." message. - console.log('Content is cached for offline use.'); + console.log("Content is cached for offline use."); // Execute callback if (config && config.onSuccess) { @@ -99,21 +99,21 @@ function registerValidSW(swUrl: string, config?: Config) { }; }) .catch((error) => { - console.error('Error during service worker registration:', error); + console.error("Error during service worker registration:", error); }); } function checkValidServiceWorker(swUrl: string, config?: Config) { // Check if the service worker can be found. If it can't reload the page. fetch(swUrl, { - headers: { 'Service-Worker': 'script' }, + headers: { "Service-Worker": "script" }, }) .then((response) => { // Ensure service worker exists, and that we really are getting a JS file. - const contentType = response.headers.get('content-type'); + const contentType = response.headers.get("content-type"); if ( response.status === 404 || - (contentType != null && contentType.indexOf('javascript') === -1) + (contentType != null && contentType.indexOf("javascript") === -1) ) { // No service worker found. Probably a different app. Reload the page. navigator.serviceWorker.ready.then((registration) => { @@ -128,13 +128,13 @@ function checkValidServiceWorker(swUrl: string, config?: Config) { }) .catch(() => { console.log( - 'No internet connection found. App is running in offline mode.' + "No internet connection found. App is running in offline mode." ); }); } export function unregister() { - if ('serviceWorker' in navigator) { + if ("serviceWorker" in navigator) { navigator.serviceWorker.ready .then((registration) => { registration.unregister(); diff --git a/client/src/setupTests.ts b/client/src/setupTests.ts index 74b1a275..5fdf0016 100644 --- a/client/src/setupTests.ts +++ b/client/src/setupTests.ts @@ -2,4 +2,4 @@ // allows you to do things like: // expect(element).toHaveTextContent(/react/i) // learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom/extend-expect'; +import "@testing-library/jest-dom/extend-expect";