mcpbeat Sign in

Firebase Cpp Test Runner Agent Skill

Workflows for locally building and running test apps for the Firebase C++ SDK across Android, iOS, and Desktop. Use when validating new features or bug fixes.

918 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
323
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/firebase/firebase-cpp-sdk --skill firebase-cpp-test-runner

The instruction itself

10 sections, as written by the author

Test Runner for Firebase C++ SDK

This skill outlines the workflows and convenience scripts required to locally

build and run tests for the Firebase C++ SDK across Android, iOS, and Desktop

platforms.

Prerequisites

Before building integration tests, ensure that your Python environment is set up with all required dependencies, and that you have the private Google Services configuration files present:

  • Python Dependencies: Run pip install -r scripts/gha/python_requirements.txt to install the required libraries (such as attrs, absl-py, etc.).
  • Android and Desktop Config Files: google-services.json must be present in <product>/integration_test/.
  • iOS Config Files: GoogleService-Info.plist must be present in <product>/integration_test/.

Using the build_testapps.py Helper Script

The easiest and standard way to build integration tests locally across platforms

is to use the build_testapps.py script.

Building for Android

To build an Android integration test application for specific products (e.g.,

auth and database), run the following command from the repository root:

python3 scripts/gha/build_testapps.py --p Android --t auth,database -output_directory ./android_testapp

This builds an Android app at

build/outputs/apk/debug/integration_test-debug.apk within the product's

module, which you can run on an Android emulator or physical device. Use

./gradlew clean to clean up the build artifacts.

Building for iOS

To build iOS testapps for a specific product (e.g., auth):

python3 scripts/gha/build_testapps.py --t auth --p iOS

_Note:_ You must have a Mac environment with Xcode and Cocoapods to build iOS

tests successfully.

Building for Desktop

To build a desktop integration test application for a specific product (e.g., auth), run the following command from the repository root:

python3 scripts/gha/build_testapps.py --p Desktop --t auth

You can specify the architecture with the --arch flag (e.g., --arch x64, --arch x86, or --arch arm64).

Manual Integration Test Builds (Alternative)

If you need more control, you can build tests manually from within the

integration_test/ (or integration_test_internal/) directories.

Android Manual Build

cd <product>/integration_test
cp path_to_google_services_files/google-services.json .
export FIREBASE_CPP_SDK_DIR=path_to_cpp_git_repo
./gradlew build

Desktop Manual Build

cd <product>/integration_test
cp path_to_google_services_files/google-services.json .
mkdir desktop_build && cd desktop_build
cmake .. -DFIREBASE_CPP_SDK_DIR=/path/to/firebase_cpp_sdk && cmake --build . -j

Once the build is finished, run the generated integration_test binary.

Product Naming Disambiguation (firebase_auth vs auth)

Different build tools use different naming conventions for products in this repository:

  • CMake Targets (Desktop/iOS): Typically prefixed with firebase_ (e.g., firebase_auth).
  • Gradle Subprojects (Android): Typically use the raw module name (e.g., :auth:build).
  • Python Scripts (e.g., build_testapps.py): Typically use the raw module name (e.g., --t auth).

> [!TIP]

> If you are unsure about the exact product name or supported flags, run Python scripts with --help (e.g., build_testapps.py --help). For shell scripts, run without parameters (Android) or with -h (iOS) to see usage.

Other skills for the same job

different authors, same section of the catalogue
Finishing A Development Branch
by ZhanlinCui
×7

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup

1k tokens
Github Release Management
by ComeOnOliver
×3

Comprehensive GitHub release orchestration with AI swarm coordination for automated versioning, testing, deployment, and rollback management

10k tokens
Migrate To Shoehorn
by mxyhi
×2

Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.

965 tokens
Bun Development
by ComeOnOliver
×2

Modern JavaScript/TypeScript development with Bun runtime. Covers package management, bundling, testing, and migration from Node.js. Use when working with Bun, optimizing JS/TS development speed, or migrating from Node.js to Bun.

8k tokens
Framework Migration Deps Upgrade
by ComeOnOliver
×2

You are a dependency management expert specializing in safe, incremental upgrades of project dependencies. Plan and execute dependency updates with minimal risk, proper testing, and clear migration pa

8k tokens
Debugging Strategies
by ComeOnOliver
×2

Master systematic debugging techniques, profiling tools, and root cause analysis to efficiently track down bugs across any codebase or technology stack. Use when investigating bugs, performance issues, or unexpected behavior.

6k tokens
Backend Dev Guidelines
by ComeOnOliver
×2

Opinionated backend development standards for Node.js + Express + TypeScript microservices. Covers layered architecture, BaseController pattern, dependency injection, Prisma repositories, Zod validation, unifiedConfig, Sentry error tracking, async safety, and testing discipline.

36k tokens
Javascript Typescript Jest
by github
vendor ×1

Best practices for writing JavaScript/TypeScript tests using Jest, including mocking strategies, test structure, and common patterns.

558 tokens

How to use it

Copy the folder

Take firebase/firebase-cpp-test-runner from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference pip. Without those the skill loads but fails at the first command.