9 Commits

Author SHA1 Message Date
Ichitux 5c782dede7 Merge pull request 'Background fixes & improvements' (#37) from mobile_app_hotfixes into main
Build & Push Docker Images / Detect Changes (push) Successful in 12s
Build & Push Docker Images / Backend Tests (push) Has been skipped
Build & Push Docker Images / Frontend Tests (push) Has been skipped
Build & Push Docker Images / Build Backend (push) Has been skipped
Build & Push Docker Images / Build Frontend (push) Has been skipped
Build & Push Docker Images / Deploy (push) Has been skipped
Reviewed-on: #37
2026-07-14 17:56:19 +00:00
Ichitux ff387e3d20 Background fixes & improvements
Run Tests on Branches / Detect Changes (push) Successful in 14s
Run Tests on Branches / Backend Tests (push) Has been skipped
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m52s
2026-07-14 19:52:55 +02:00
Ichitux 58c1fb5bb6 Merge pull request 'fix: regenerate backend package-lock.json — sync OTel dependencies' (#36) from fix/backend-lockfile-sync into main
Build & Push Docker Images / Frontend Tests (push) Has been skipped
Build & Push Docker Images / Detect Changes (push) Successful in 11s
Build & Push Docker Images / Backend Tests (push) Successful in 1m36s
Build & Push Docker Images / Build Backend (push) Successful in 3m7s
Build & Push Docker Images / Build Frontend (push) Has been skipped
Build & Push Docker Images / Deploy (push) Successful in 1m5s
Reviewed-on: #36
2026-07-14 12:21:47 +00:00
Antoni Nuñez Romeu e83f32324f fix: regenerate backend package-lock.json — sync OTel dependencies
Run Tests on Branches / Backend Tests (push) Successful in 1m37s
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
Run Tests on Branches / Detect Changes (push) Successful in 12s
2026-07-14 14:16:57 +02:00
Antoni Nuñez Romeu 59f81c9203 Merge branch 'feat/observability-metrics-monitoring'
Build & Push Docker Images / Detect Changes (push) Successful in 11s
Build & Push Docker Images / Frontend Tests (push) Has been skipped
Build & Push Docker Images / Backend Tests (push) Successful in 1m38s
Build & Push Docker Images / Build Backend (push) Failing after 35s
Build & Push Docker Images / Build Frontend (push) Has been skipped
Build & Push Docker Images / Deploy (push) Has been skipped
2026-07-14 13:44:07 +02:00
Antoni Nuñez Romeu 809d4b8a7f Fixed backend test
Run Tests on Branches / Detect Changes (push) Successful in 12s
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Successful in 1m34s
Run Tests on Branches / Backend Tests (push) Successful in 1m36s
2026-07-14 13:38:16 +02:00
Ichitux 89cb8ee2fb Merge pull request 'ci: optimize test performance — from ~3h to 3.5s' (#35) from ci/optimize-test-performance into main
Build & Push Docker Images / Detect Changes (push) Successful in 12s
Build & Push Docker Images / Backend Tests (push) Successful in 1m36s
Build & Push Docker Images / Frontend Tests (push) Has been skipped
Build & Push Docker Images / Build Backend (push) Successful in 3m9s
Build & Push Docker Images / Build Frontend (push) Has been skipped
Build & Push Docker Images / Deploy (push) Successful in 1m2s
Reviewed-on: #35
2026-07-14 11:08:41 +00:00
Antoni Nuñez Romeu bd7fe56330 fix: skip Redis connection in test mode — prevents CI hang
Run Tests on Branches / Detect Changes (push) Successful in 13s
Run Tests on Branches / Backend Tests (push) Successful in 2m9s
Run Tests on Branches / Frontend Tests (push) Has been skipped
Run Tests on Branches / Frontend Mobile Tests (push) Has been skipped
The top-level await redisClient.connect() in redis-client.js was
blocking module import when no Redis server is available (CI env).
Add NODE_ENV guard + reconnect strategy with max retries.
2026-07-14 13:03:46 +02:00
Antoni Nuñez Romeu e3db56715b ci: optimize test performance — from ~3h to 3.5s
Run Tests on Branches / Frontend Tests (push) Has been cancelled
Run Tests on Branches / Frontend Mobile Tests (push) Has been cancelled
Run Tests on Branches / Backend Tests (push) Has been cancelled
Run Tests on Branches / Detect Changes (push) Successful in 13s
- Lazy-load tesseract.js only in OCR route (skips 30MB WASM download)
- Conditional tracing.js import (skip OTel gRPC in test mode)
- Remove unused barcode-detector import
- Add testTimeout/openHandlesTimeout to jest.config.js
- Add --forceExitTimeout=30000 to test script
- Split CI test jobs into parallel workflows (backend/frontend/mobile)
- Add timeout-minutes: 15 to all test jobs
- Use npm ci --ignore-scripts + selective native rebuild
2026-07-14 12:42:02 +02:00
9 changed files with 721 additions and 971 deletions
+1
View File
@@ -3,6 +3,7 @@ dist/
dev-dist/
build/
.turbo/
.mimocode/
*.sqlite
*.sqlite3
.env
+1 -1
View File
@@ -1 +1 @@
{"pid":10782,"startedAt":1783578681151}
{"pid":568607,"startedAt":1784046408782}
+676 -963
View File
File diff suppressed because it is too large Load Diff
-2
View File
@@ -46,8 +46,6 @@ redisClient.setEx = async (...args) => {
}
};
// Connect to Redis
await redisClient.connect();
// Connect to Redis — skip in test (services are mocked) or when REDIS_URL is unset
if (process.env.NODE_ENV !== 'test') {
await redisClient.connect();
@@ -55,6 +55,8 @@ export default function TabLayout() {
fontWeight: '600',
fontSize: isTablet ? 20 : 17,
},
sceneContainerStyle: { backgroundColor: 'transparent' },
sceneStyle: { backgroundColor: 'transparent' },
}}
>
<Tabs.Screen
+17 -3
View File
@@ -50,6 +50,7 @@ function RootLayoutInner() {
headerStyle: { backgroundColor: colors.card },
headerTintColor: colors.primary,
headerTitleStyle: { color: colors.text, fontWeight: '600' },
contentStyle: { backgroundColor: 'transparent' },
}}
>
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
@@ -99,7 +100,7 @@ function ThemedBackground({ children }: { children: React.ReactNode }) {
resizeMode="cover"
/>
<View style={[styles.overlay, isDark && styles.overlayDark]} pointerEvents="none" />
<View style={styles.content}>
<View style={styles.content} pointerEvents="auto">
{children}
</View>
</View>
@@ -127,17 +128,30 @@ const styles = StyleSheet.create({
flex: 1,
},
bgImage: {
...StyleSheet.absoluteFillObject,
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
width: '100%',
height: '100%',
opacity: 0.55,
zIndex: 0,
},
overlay: {
...StyleSheet.absoluteFillObject,
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
backgroundColor: 'rgba(255, 252, 245, 0.48)',
zIndex: 1,
},
overlayDark: {
backgroundColor: 'rgba(0, 0, 0, 0.25)',
},
content: {
flex: 1,
zIndex: 2,
},
});
+21
View File
@@ -0,0 +1,21 @@
const { getDefaultConfig } = require("expo/metro-config");
const path = require("path");
const projectRoot = __dirname;
const monorepoRoot = path.resolve(projectRoot, "../..");
const config = getDefaultConfig(projectRoot);
// Watch the monorepo root so Metro sees all workspace packages
config.watchFolders = [monorepoRoot];
// Resolve modules from both the workspace and root node_modules
config.resolver.nodeModulesPaths = [
path.resolve(projectRoot, "node_modules"),
path.resolve(monorepoRoot, "node_modules"),
];
// Ensure symlinks are followed (npm workspaces use symlinks)
config.resolver.unstable_enableSymlinks = true;
module.exports = config;
+1 -1
View File
@@ -4,6 +4,7 @@
"main": "expo-router/entry",
"dependencies": {
"@expo/vector-icons": "^15.0.2",
"@grafana/faro-react-native": "^1.3.0",
"@react-native-async-storage/async-storage": "2.2.0",
"@tanstack/react-query": "^5.101.2",
"axios": "^1.18.1",
@@ -13,7 +14,6 @@
"expo-constants": "~57.0.3",
"expo-dev-client": "~57.0.5",
"expo-device": "~7.0.2",
"@grafana/faro-react-native": "^1.2.1",
"expo-image-picker": "~57.0.2",
"expo-linking": "~57.0.1",
"expo-local-authentication": "~57.0.0",
+2 -1
View File
@@ -138,7 +138,7 @@
"version": "1.0.0",
"dependencies": {
"@expo/vector-icons": "^15.0.2",
"@grafana/faro-react-native": "^1.2.1",
"@grafana/faro-react-native": "^1.3.0",
"@react-native-async-storage/async-storage": "2.2.0",
"@tanstack/react-query": "^5.101.2",
"axios": "^1.18.1",
@@ -416,6 +416,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@grafana/faro-react-native/-/faro-react-native-1.3.0.tgz",
"integrity": "sha512-KeohD3S2xmiukL5YW3mOGDqvFiwpD9IzJ2EtZ50ktEsnA+6EMt2AtJ8RzJfAamGTYqemBpDiw51rqB4ID+C2xg==",
"license": "Apache-2.0",
"dependencies": {
"@grafana/faro-core": "^2.7.0",
"@react-native-async-storage/async-storage": "^1.21.0",