From d69f38b1c350df4ccc4d9a141c8fc0dda3f46392 Mon Sep 17 00:00:00 2001 From: heznpc Date: Wed, 1 Jul 2026 15:31:49 +0900 Subject: [PATCH] test: stabilize first auth render path --- .cursor/rules/repo-context.mdc | 10 ++++++++++ .github/copilot-instructions.md | 8 ++++++++ CLAUDE.md | 7 +++++++ README.ko.md | 2 +- README.md | 2 +- package-lock.json | 8 ++++---- package.json | 8 ++++---- tests/auth-context.test.js | 8 +++++--- 8 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 .cursor/rules/repo-context.mdc create mode 100644 .github/copilot-instructions.md create mode 100644 CLAUDE.md diff --git a/.cursor/rules/repo-context.mdc b/.cursor/rules/repo-context.mdc new file mode 100644 index 0000000..35e640c --- /dev/null +++ b/.cursor/rules/repo-context.mdc @@ -0,0 +1,10 @@ +--- +description: Shared repo context +alwaysApply: true +--- + +Read `AGENTS.md` first. Treat it as the source of truth for this repo's +commands, invariants, public naming, release constraints, and first-user path. + +This file is a thin client adapter for Cursor. Do not add independent strategy, +roadmap, package-name, release, or baseline-scope rules here. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..0c6e602 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,8 @@ +# Agent context + +Read `AGENTS.md` first. Treat it as the source of truth for this repo's +commands, invariants, public naming, release constraints, and first-user path. + +This file is a thin client adapter for GitHub Copilot and VS Code. Do not add +independent strategy, roadmap, package-name, release, or baseline-scope rules +here. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..5838d3c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,7 @@ +# Agent context + +Read `AGENTS.md` first. Treat it as the source of truth for this repo's +commands, invariants, public naming, release constraints, and first-user path. + +This file is a thin client adapter. Do not add independent strategy, roadmap, +package-name, release, or baseline-scope rules here. diff --git a/README.ko.md b/README.ko.md index 3dfbdf1..33994a3 100644 --- a/README.ko.md +++ b/README.ko.md @@ -27,7 +27,7 @@ **[create-starter](https://github.com/starter-series/create-starter) 사용** (권장): ```bash -npx @starter-series/create my-app --template react-native +gh repo create my-app --template starter-series/react-native-starter --clone cd my-app npm install npm run check:expo diff --git a/README.md b/README.md index 1dcac4e..55b4818 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Build your app. Push to deploy. **Via [create-starter](https://github.com/starter-series/create-starter)** (recommended): ```bash -npx @starter-series/create my-app --template react-native +gh repo create my-app --template starter-series/react-native-starter --clone cd my-app npm install npm run check:expo diff --git a/package-lock.json b/package-lock.json index e6e7b8a..bd0256d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@testing-library/react-native": "^12.9.0", - "eslint": "^10.5.0", + "eslint": "^10.6.0", "globals": "^17.7.0", "jest": "~29.7.0", "jest-expo": "~52.0.0", @@ -6716,9 +6716,9 @@ } }, "node_modules/eslint": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz", - "integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz", + "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==", "dev": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index 0ee5e3a..c898a1c 100644 --- a/package.json +++ b/package.json @@ -34,13 +34,13 @@ "react-native-web": "~0.19.13" }, "devDependencies": { - "@testing-library/react-native": "^12.9.0", - "react-test-renderer": "18.3.1", "@eslint/js": "^10.0.1", - "eslint": "^10.5.0", + "@testing-library/react-native": "^12.9.0", + "eslint": "^10.6.0", "globals": "^17.7.0", "jest": "~29.7.0", - "jest-expo": "~52.0.0" + "jest-expo": "~52.0.0", + "react-test-renderer": "18.3.1" }, "overrides": { "@babel/core": "7.29.7", diff --git a/tests/auth-context.test.js b/tests/auth-context.test.js index fe2932b..81a919e 100644 --- a/tests/auth-context.test.js +++ b/tests/auth-context.test.js @@ -73,7 +73,8 @@ const { assertGoogleEnv, readGoogleClientIds } = require('../lib/env'); function Probe({ onUser }) { const ctx = useAuth(); - onUser(ctx); + onUser?.(ctx); + if (ctx.loading) return loading; return {ctx.user ? `user:${ctx.user.email}` : 'anon'}; } @@ -281,8 +282,9 @@ describe('AuthProvider lifecycle', () => { (captured = c)} /> , ); - await waitFor(() => expect(captured.loading).toBe(false), { timeout: 4000 }); - expect(captured.user).toBeNull(); + await waitFor(() => expect(captured?.loading).toBe(false), { timeout: 4000 }); + expect(captured?.loading).toBe(false); + expect(captured?.user).toBeNull(); expect(mockSecureStore.getItemAsync).toHaveBeenCalledWith(STORAGE_KEY); }, 10000,