diff --git a/.github/workflows/app.e2e_tests.yml b/.github/workflows/app.e2e_tests.yml index 4f7e7fc0..0af112f5 100644 --- a/.github/workflows/app.e2e_tests.yml +++ b/.github/workflows/app.e2e_tests.yml @@ -32,7 +32,7 @@ jobs: browser: ${{ matrix.test-platform }} - name: Upload screenshots of failed tests - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: failure() with: name: cypress-screenshots diff --git a/__tests__/components/navbar/Navbar.test.tsx b/__tests__/components/navbar/Navbar.test.tsx index 9ebc59c9..c0670f7a 100644 --- a/__tests__/components/navbar/Navbar.test.tsx +++ b/__tests__/components/navbar/Navbar.test.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import { act } from 'react-dom/test-utils'; import { Provider } from 'react-redux'; import renderer from 'react-test-renderer'; import configureStore from 'redux-mock-store'; @@ -25,16 +24,11 @@ describe('NavBar Component', () => { }); it('renders with showNavBar=true', () => { - let component; - - act(() => { - component = renderer.create( - - - , - ); - }); - // @ts-ignore + const component = renderer.create( + + + , + ); const tree = component.toJSON(); expect(tree).toMatchSnapshot(); }); @@ -48,17 +42,11 @@ describe('NavBar Component', () => { theme: 'light', }, }); - - let component; - - act(() => { - component = renderer.create( - - - , - ); - }); - // @ts-ignore + const component = renderer.create( + + + , + ); const tree = component.toJSON(); expect(tree).toMatchSnapshot(); }); diff --git a/jest-setup.ts b/jest-setup.ts index 7a59ca5f..3e41cbf9 100644 --- a/jest-setup.ts +++ b/jest-setup.ts @@ -3,8 +3,6 @@ import '@testing-library/jest-native/extend-expect'; import { useAppSelector } from './src/lib/redux/Hooks'; import { ThemeState } from './src/lib/redux/slices/ThemeSlice'; -// Silence the warning: Animated: `useNativeDriver` is not supported because the native animated module is missing -jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper'); jest.mock('react-native-vector-icons/FontAwesome5', () => 'FontAwesome5'); jest.mock('react-native-webview', () => 'WebView'); diff --git a/package-lock.json b/package-lock.json index 4cb1ce04..51cebed5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,6 @@ "@react-native-async-storage/async-storage": "1.23.1", "@react-native-community/eslint-config": "^3.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-navigation/bottom-tabs": "^7.2.0", "@react-navigation/native": "^7.0.14", "@react-navigation/native-stack": "^7.2.0", "@react-navigation/routers": "^6.1.9", @@ -33,7 +32,6 @@ "expo-linking": "~7.0.5", "expo-router": "~4.0.20", "expo-status-bar": "~2.0.1", - "expo-system-ui": "^4.0.9", "expo-web-browser": "~14.0.2", "i18next": "^23.7.6", "openai": "^4.16.1", @@ -47,10 +45,8 @@ "react-native-element-dropdown": "^2.10.4", "react-native-error-boundary": "^1.2.3", "react-native-fs": "^2.20.0", - "react-native-gesture-handler": "~2.20.2", "react-native-paper": "^5.11.2", "react-native-progress": "^5.0.1", - "react-native-reanimated": "~3.16.7", "react-native-render-html": "^6.3.4", "react-native-safe-area-context": "4.12.0", "react-native-screens": "~4.4.0", @@ -70,15 +66,9 @@ "devDependencies": { "@babel/core": "^7.26.10", "@babel/preset-env": "^7.26.9", - "@babel/runtime": "^7.26.10", "@cypress/code-coverage": "^3.12.6", - "@react-native-community/cli": "^15.0.1", - "@react-native-community/cli-platform-android": "^15.0.1", - "@react-native-community/cli-platform-ios": "^15.0.1", "@react-native/babel-preset": "^0.77.0", - "@react-native/eslint-config": "^0.77.0", "@react-native/metro-config": "^0.77.0", - "@react-native/typescript-config": "^0.77.0", "@testing-library/jest-native": "^5.4.3", "@testing-library/react-native": "^12.4.0", "@types/jest": "^29.5.5", @@ -21956,186 +21946,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz", - "integrity": "sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz", - "integrity": "sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz", - "integrity": "sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz", - "integrity": "sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz", - "integrity": "sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz", - "integrity": "sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz", - "integrity": "sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz", - "integrity": "sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz", - "integrity": "sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", diff --git a/package.json b/package.json index ae5fafaa..a87f58fc 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "@react-native-async-storage/async-storage": "1.23.1", "@react-native-community/eslint-config": "^3.2.0", "@react-native-community/netinfo": "11.4.1", - "@react-navigation/bottom-tabs": "^7.2.0", "@react-navigation/native": "^7.0.14", "@react-navigation/native-stack": "^7.2.0", "@react-navigation/routers": "^6.1.9", @@ -60,7 +59,6 @@ "expo-linking": "~7.0.5", "expo-router": "~4.0.20", "expo-status-bar": "~2.0.1", - "expo-system-ui": "^4.0.9", "expo-web-browser": "~14.0.2", "i18next": "^23.7.6", "openai": "^4.16.1", @@ -74,10 +72,8 @@ "react-native-element-dropdown": "^2.10.4", "react-native-error-boundary": "^1.2.3", "react-native-fs": "^2.20.0", - "react-native-gesture-handler": "~2.20.2", "react-native-paper": "^5.11.2", "react-native-progress": "^5.0.1", - "react-native-reanimated": "~3.16.7", "react-native-render-html": "^6.3.4", "react-native-safe-area-context": "4.12.0", "react-native-screens": "~4.4.0", @@ -97,15 +93,9 @@ "devDependencies": { "@babel/core": "^7.26.10", "@babel/preset-env": "^7.26.9", - "@babel/runtime": "^7.26.10", "@cypress/code-coverage": "^3.12.6", - "@react-native-community/cli": "^15.0.1", - "@react-native-community/cli-platform-android": "^15.0.1", - "@react-native-community/cli-platform-ios": "^15.0.1", "@react-native/babel-preset": "^0.77.0", - "@react-native/eslint-config": "^0.77.0", "@react-native/metro-config": "^0.77.0", - "@react-native/typescript-config": "^0.77.0", "@testing-library/jest-native": "^5.4.3", "@testing-library/react-native": "^12.4.0", "@types/jest": "^29.5.5", diff --git a/src/components/WTR/Card/TechProviderCard.tsx b/src/components/WTR/Card/TechProviderCard.tsx index fa8e490a..e53ca3c6 100644 --- a/src/components/WTR/Card/TechProviderCard.tsx +++ b/src/components/WTR/Card/TechProviderCard.tsx @@ -91,7 +91,14 @@ export function TechProviderCard({ testID={`tech-provider-${techProviderSlug}-button`} > diff --git a/src/screens/Course/StageOverview.tsx b/src/screens/Course/StageOverview.tsx index 664eca35..4b10cc4a 100644 --- a/src/screens/Course/StageOverview.tsx +++ b/src/screens/Course/StageOverview.tsx @@ -122,7 +122,7 @@ export default function StageOverview() { marginLeft: 10, }, courseBackgroundContainer: { - borderTopRadius: 15, + borderRadius: 15, overflow: 'hidden', }, courseTitle: { diff --git a/webpack.config.js b/webpack.config.js index 54dc31fc..1d017972 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,4 +1,4 @@ -const createExpoWebpackConfigAsync = require('@expo/webpack-config'); +const createExpoWebpackConfigAsync = require('@expo/metro-config'); const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); module.exports = async function (env, argv) {