From 3433bb6e3350bf87a42de85d308e79f0dcd214fb Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Wed, 2 Jul 2025 15:25:51 +0530 Subject: [PATCH 1/9] adds github actions for build and test --- .github/workflows/build.yml | 34 ++++++++++++++++++++++++++++ .github/workflows/test.yml | 34 ++++++++++++++++++++++++++++ apps/playground/package.json | 3 ++- package.json | 4 +++- packages/react-native/package.json | 2 +- packages/react-native/vite.config.ts | 7 ++++-- turbo.json | 15 ++++++++++++ 7 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..abcdbd9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,34 @@ +name: Build React Native Package and Playground +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened] + merge_group: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "pnpm" + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 9.0.0 + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..8f4edc3 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: Run unit tests for react-native package +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened] + merge_group: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: "pnpm" + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + version: 9.0.0 + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm build diff --git a/apps/playground/package.json b/apps/playground/package.json index d8ff156..05939e3 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -6,7 +6,8 @@ "dev": "expo start --reset-cache", "android": "expo start --android", "ios": "expo start --ios", - "clean": "rimraf .turbo node_modules .expo" + "clean": "rimraf .turbo node_modules .expo", + "build": "expo export" }, "dependencies": { "@formbricks/react-native": "workspace:*", diff --git a/package.json b/package.json index 970b2a8..cd6aafd 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,9 @@ "dev": "turbo run dev", "lint": "turbo run lint", "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "check-types": "turbo run check-types" + "check-types": "turbo run check-types", + "test": "turbo run test --no-cache", + "test:coverage": "turbo run test:coverage --no-cache" }, "devDependencies": { "prettier": "^3.5.3", diff --git a/packages/react-native/package.json b/packages/react-native/package.json index bb29e77..ed827f2 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -38,7 +38,7 @@ "dev": "vite build --watch --mode dev", "clean": "rimraf .turbo node_modules dist .turbo", "test": "vitest", - "coverage": "vitest run --coverage" + "test:coverage": "vitest run --coverage" }, "dependencies": { "@react-native-community/netinfo": "11.4.1", diff --git a/packages/react-native/vite.config.ts b/packages/react-native/vite.config.ts index 2087bfa..1c4c861 100644 --- a/packages/react-native/vite.config.ts +++ b/packages/react-native/vite.config.ts @@ -31,13 +31,16 @@ const config = (): UserConfig => { fileName: "index", }, }, - plugins: [dts({ rollupTypes: true, bundledPackages: ["@formbricks/types"] })], + plugins: [ + dts({ rollupTypes: true, bundledPackages: ["@formbricks/types"] }), + ], test: { setupFiles: ["./vitest.setup.ts"], coverage: { provider: "v8", reporter: ["text", "json", "html"], - include: ["src/lib/**/*.ts"], + include: ["src/**/*.ts"], + exclude: ["src/types/**/*.ts"], }, }, }); diff --git a/turbo.json b/turbo.json index d508947..b039cea 100644 --- a/turbo.json +++ b/turbo.json @@ -16,6 +16,21 @@ "dev": { "cache": false, "persistent": true + }, + "@formbricks/react-native:build": { + "dependsOn": ["^build"], + "cache": false + }, + "playground:build": { + "dependsOn": ["@formbricks/react-native:build"], + "outputs": ["apps/playground/out/**"], + "cache": false + }, + "test": { + "outputs": [] + }, + "test:coverage": { + "outputs": [] } } } From 255c4c0ed0dabd9d0fea525d150fbf50b3fce201 Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Wed, 2 Jul 2025 15:29:11 +0530 Subject: [PATCH 2/9] fixes actions --- .github/workflows/build.yml | 13 +++++-------- .github/workflows/test.yml | 13 +++++-------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index abcdbd9..4c94f98 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,16 +16,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup Node.js 20.x + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 with: - node-version: "20" - cache: "pnpm" + node-version: 20.x - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.0.0 + - name: Install pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8f4edc3..8761ac1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,16 +16,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js - uses: actions/setup-node@v4 + - name: Setup Node.js 20.x + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 with: - node-version: "20" - cache: "pnpm" + node-version: 20.x - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9.0.0 + - name: Install pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - name: Install dependencies run: pnpm install From d21fcabf7d0733fee64917497fa6f0e70aa07744 Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Wed, 2 Jul 2025 15:31:23 +0530 Subject: [PATCH 3/9] fixes actions --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8761ac1..70fad36 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,5 +27,5 @@ jobs: - name: Install dependencies run: pnpm install - - name: Build - run: pnpm build + - name: Test + run: pnpm test From 2e6608baac2bdafb4b692ace16b1cdfe01e3babc Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Wed, 2 Jul 2025 15:46:29 +0530 Subject: [PATCH 4/9] fixes actions --- .github/workflows/build.yml | 2 ++ .github/workflows/sonarqube.yml | 39 +++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 2 ++ sonar-project.properties | 22 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 .github/workflows/sonarqube.yml create mode 100644 sonar-project.properties diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c94f98..6884ca1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,6 +7,8 @@ on: pull_request: types: [opened, synchronize, reopened] merge_group: +permissions: + contents: read jobs: build: diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml new file mode 100644 index 0000000..a05d24c --- /dev/null +++ b/.github/workflows/sonarqube.yml @@ -0,0 +1,39 @@ +name: SonarQube +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + types: [opened, synchronize, reopened] + merge_group: +permissions: + contents: read + +jobs: + sonarqube: + name: SonarQube + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js 20.x + uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 + with: + node-version: 20.x + + - name: Install pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Install dependencies + run: pnpm install + + - name: Run tests with coverage + run: | + pnpm test:coverage + - name: SonarQube Scan + uses: SonarSource/sonarqube-scan-action@2500896589ef8f7247069a56136f8dc177c27ccf + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 70fad36..86db3e9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,6 +7,8 @@ on: pull_request: types: [opened, synchronize, reopened] merge_group: +permissions: + contents: read jobs: test: diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..6de2b47 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,22 @@ +# SonarQube Configuration for Formbricks React Native +sonar.projectKey=formbricks_react-native +sonar.organization=formbricks + +# Source code paths +sonar.sources=packages/react-native/src,apps/playground/src +sonar.tests=packages/react-native/src + +sonar.test.inclusions=**/*.test.*,**/*.spec.* + +# General exclusions +sonar.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/**,**/apps/playground/**,**/*.config.js,**/*.config.ts,**/vite.config.ts,**/vitest.setup.ts,**/tsconfig.json,**/package.json,**/pnpm-lock.yaml,**/turbo.json,**/pnpm-workspace.yaml + +# Language specific settings +sonar.javascript.lcov.reportPaths=packages/react-native/coverage/lcov.info +sonar.typescript.tsconfigPath=packages/react-native/tsconfig.json,apps/playground/tsconfig.json + +# React Native specific exclusions +sonar.exclusions=**/assets/**,**/android/**,**/ios/**,**/android/**/*,**/ios/**/*,**/*.gradle,**/*.plist,**/*.pbxproj,**/*.xcworkspace,**/*.xcodeproj + +# Coverage settings +sonar.coverage.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/**,**/apps/playground/**,**/*.config.js,**/*.config.ts,**/vite.config.ts,**/vitest.setup.ts,**/tsconfig.json,**/package.json,**/pnpm-lock.yaml,**/turbo.json,**/pnpm-workspace.yaml From a27f012c04caa41eac209e4597d281fc82818a4e Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Wed, 2 Jul 2025 15:51:29 +0530 Subject: [PATCH 5/9] adds lcov provider --- packages/react-native/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/vite.config.ts b/packages/react-native/vite.config.ts index 1c4c861..ebca087 100644 --- a/packages/react-native/vite.config.ts +++ b/packages/react-native/vite.config.ts @@ -38,7 +38,7 @@ const config = (): UserConfig => { setupFiles: ["./vitest.setup.ts"], coverage: { provider: "v8", - reporter: ["text", "json", "html"], + reporter: ["text", "json", "html", "lcov"], include: ["src/**/*.ts"], exclude: ["src/types/**/*.ts"], }, From 6aa5bf7b88f295a8be317dd9fbab789a1863dcd4 Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Thu, 3 Jul 2025 10:08:27 +0530 Subject: [PATCH 6/9] adds lcov provider --- .github/workflows/sonarqube.yml | 6 ++++++ sonar-project.properties | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index a05d24c..fdcb816 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -32,6 +32,12 @@ jobs: - name: Run tests with coverage run: | pnpm test:coverage + + - name: List coverage files (debug) + run: | + find . -name "*.info" -o -name "coverage" -type d + ls -la packages/react-native/coverage/ || echo "No coverage directory found" + - name: SonarQube Scan uses: SonarSource/sonarqube-scan-action@2500896589ef8f7247069a56136f8dc177c27ccf env: diff --git a/sonar-project.properties b/sonar-project.properties index 6de2b47..8858a8d 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -6,17 +6,16 @@ sonar.organization=formbricks sonar.sources=packages/react-native/src,apps/playground/src sonar.tests=packages/react-native/src +# Test inclusions and exclusions sonar.test.inclusions=**/*.test.*,**/*.spec.* +sonar.test.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/** # General exclusions -sonar.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/**,**/apps/playground/**,**/*.config.js,**/*.config.ts,**/vite.config.ts,**/vitest.setup.ts,**/tsconfig.json,**/package.json,**/pnpm-lock.yaml,**/turbo.json,**/pnpm-workspace.yaml +sonar.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/**,**/apps/playground/**,**/*.config.js,**/*.config.ts,**/vite.config.ts,**/vitest.setup.ts,**/tsconfig.json,**/package.json,**/pnpm-lock.yaml,**/turbo.json,**/pnpm-workspace.yaml,**/assets/**,**/android/**,**/ios/**,**/android/**/*,**/ios/**/*,**/*.gradle,**/*.plist,**/*.pbxproj,**/*.xcworkspace,**/*.xcodeproj # Language specific settings sonar.javascript.lcov.reportPaths=packages/react-native/coverage/lcov.info sonar.typescript.tsconfigPath=packages/react-native/tsconfig.json,apps/playground/tsconfig.json -# React Native specific exclusions -sonar.exclusions=**/assets/**,**/android/**,**/ios/**,**/android/**/*,**/ios/**/*,**/*.gradle,**/*.plist,**/*.pbxproj,**/*.xcworkspace,**/*.xcodeproj - # Coverage settings sonar.coverage.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/coverage/**,**/.turbo/**,**/apps/playground/**,**/*.config.js,**/*.config.ts,**/vite.config.ts,**/vitest.setup.ts,**/tsconfig.json,**/package.json,**/pnpm-lock.yaml,**/turbo.json,**/pnpm-workspace.yaml From f6c2956e088144979199a35b004aa7f2e97d4fd2 Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Thu, 3 Jul 2025 10:45:08 +0530 Subject: [PATCH 7/9] action versions --- .github/workflows/build.yml | 8 ++++---- .github/workflows/sonarqube.yml | 8 ++++---- .github/workflows/test.yml | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6884ca1..c4e32e1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,13 +18,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js 20.x - uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 + - name: Setup Node.js 22.x + uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x - name: Install pnpm - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index fdcb816..b32375d 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -18,13 +18,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js 20.x - uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 + - name: Setup Node.js 22.x + uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x - name: Install pnpm - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 86db3e9..bf86477 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,13 +18,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js 20.x - uses: actions/setup-node@1a4442cacd436585916779262731d5b162bc6ec7 # v3.8.2 + - name: Setup Node.js 22.x + uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: 22.x - name: Install pnpm - uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + uses: pnpm/action-setup@v4 - name: Install dependencies run: pnpm install From e64fa0e6115684570141fac4945332077b4276af Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Thu, 3 Jul 2025 10:47:59 +0530 Subject: [PATCH 8/9] edit actions --- .github/workflows/build.yml | 2 +- .github/workflows/sonarqube.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c4e32e1..bd18e60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - name: Build run: pnpm build diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index b32375d..ab1d87e 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -27,7 +27,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - name: Run tests with coverage run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bf86477..96b9606 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: uses: pnpm/action-setup@v4 - name: Install dependencies - run: pnpm install + run: pnpm install --frozen-lockfile - name: Test run: pnpm test From ee1d31135d6612c097abe9f285cc280f36b0e784 Mon Sep 17 00:00:00 2001 From: pandeymangg Date: Thu, 3 Jul 2025 10:48:54 +0530 Subject: [PATCH 9/9] removes unnecessary step --- .github/workflows/sonarqube.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index ab1d87e..0b28d17 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -33,11 +33,6 @@ jobs: run: | pnpm test:coverage - - name: List coverage files (debug) - run: | - find . -name "*.info" -o -name "coverage" -type d - ls -la packages/react-native/coverage/ || echo "No coverage directory found" - - name: SonarQube Scan uses: SonarSource/sonarqube-scan-action@2500896589ef8f7247069a56136f8dc177c27ccf env: