Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
103 commits
Select commit Hold shift + click to select a range
839bfea
refactor(int): integration tests rewrite
kirstywilliams Dec 20, 2023
59529be
chore: update gitignore
kirstywilliams Jan 4, 2024
bca95fb
feat: integration tests
kirstywilliams Feb 16, 2024
151d196
chore: update readme
kirstywilliams Feb 26, 2024
4405786
feat: Update firebase_admin t0 12.3.0 in sample env
exaby73 Jul 28, 2024
b0b39d6
wip: Integration tests fixes
exaby73 Oct 7, 2024
b01e064
wip(integration-tests): Update .env.example
exaby73 Oct 7, 2024
2270dff
wip(integration-tests): Remove FIRESTORE_REGION
exaby73 Oct 7, 2024
7909e42
remove(integration_test): Storage V1 delete tests
exaby73 Oct 10, 2024
bbf1532
fix(integration_test): Multiple fixes for tests
exaby73 Oct 10, 2024
ae15e04
fix(integration_test): Use bash for source command
exaby73 Oct 31, 2024
28495ec
fix(integration_test): Rename integration_tests to integration_test
exaby73 Oct 31, 2024
747e0c6
fix(integration_test): Use bash for missed source command
exaby73 Oct 31, 2024
8360ae8
fix(integration_test): Runtime for Python
exaby73 Oct 31, 2024
32aeadf
fix(integration_test): Pass DEBUG to CLI env
exaby73 Oct 31, 2024
fa98a7f
refactor: make integration tests more robust
cabljac Aug 6, 2025
05fd26b
refactor: add initial refactor work
cabljac Aug 11, 2025
025b170
feat: setup database tests
HassanBahati Aug 18, 2025
4f7411a
test: add database tests
HassanBahati Aug 18, 2025
7a30831
refactor: use logger class
HassanBahati Aug 18, 2025
8930977
tests: add v1 database functions
HassanBahati Aug 18, 2025
5c94d12
tests: fix tests
HassanBahati Aug 20, 2025
bf828c0
chore(integration_tests): fix linting errors
cabljac Aug 29, 2025
7d7f856
feat: add simple cleanup script
cabljac Aug 29, 2025
55ba8a6
refactor(integration_test): factor out into smaller modules
cabljac Sep 1, 2025
089bb33
chore: design simpler approach
cabljac Sep 15, 2025
0a6358f
feat(integration_test): declarative version
cabljac Sep 15, 2025
6424ad8
feat(integration_test): declare project id
cabljac Sep 15, 2025
7c00293
feat(integration_test): full flow
cabljac Sep 15, 2025
e8d1129
feat(integration_test): add README and exp backoff utils
cabljac Sep 16, 2025
00e4b55
chore(integration_test): smaller test run id
cabljac Sep 16, 2025
f1edb3d
feat(integration_test): add service to declaration yaml
cabljac Sep 16, 2025
5a30cee
feat(integration_test): migrate database tests
cabljac Sep 16, 2025
110704d
feat(integration_test): migrate pubsub tests
cabljac Sep 16, 2025
5c85e84
feat(integration_test): migrate other v1 tests
cabljac Sep 16, 2025
a3f9021
fix(integration_tests): fix firestore tests
cabljac Sep 16, 2025
0fc16bd
fix(integration_tests): fix storage tests
cabljac Sep 17, 2025
68ebad0
feat(integration_test): sequential runs
cabljac Sep 17, 2025
a78853b
fix(integration_tests): fix tasks v1
cabljac Sep 17, 2025
26c8cbd
chore(integration_test): skip testlab for now
cabljac Sep 17, 2025
c83c039
feat(integration_test): migrate v2 tests
cabljac Sep 17, 2025
0914b94
feat: migrate remaining tests across and fix existing
cabljac Sep 22, 2025
143dbb3
refactor(integration_tests): combine suite configs
cabljac Sep 22, 2025
123686d
fix(integration_tests): fix auth v1 tests
cabljac Sep 22, 2025
ab3260b
refactor(integration_tests): move to a node script
cabljac Sep 23, 2025
631e75f
fix(integration_tests): fix deployment issues in node script
cabljac Sep 24, 2025
9102f1b
fix(integration_tests): fix listed v2 projects
cabljac Sep 24, 2025
8d3e563
refactor(integration_tests): replace legacy framework
cabljac Sep 24, 2025
498c51a
fix(integration_tests): permissions and task queue cleanup
cabljac Sep 24, 2025
1584e07
refactor(integration_tests): keep project id declaration in yaml
cabljac Sep 24, 2025
1af4029
refactor(integration_test): split across different cloudbuilds
cabljac Sep 24, 2025
f96ba43
fix(integration_tests): scope cleanup to declared project
cabljac Sep 24, 2025
cfb9611
refactor(integration_tests): remove legacy integration_test cloudbuil…
cabljac Sep 24, 2025
ece2567
fix(integration_tests): restore original linting setup
cabljac Sep 24, 2025
67a4088
fix: exponential backoff and more robust deletion
cabljac Sep 29, 2025
036444d
fix(integration_test): verify that services are properly torn down
cabljac Sep 29, 2025
11f38aa
chore(integration_test): skip some tests that are currently broken, a…
cabljac Sep 29, 2025
494e814
fix(integration_test): add delay before running tests
cabljac Sep 29, 2025
ecb4b21
fix(integration_tests): fix alert template
cabljac Sep 29, 2025
8d0de16
fix(integration_test): create bucket for results if doesn't exist
cabljac Sep 30, 2025
f07952b
fix(firestore): increased retry limit to 40 reties
dackers86 Oct 7, 2025
a18ddfa
fix(database): updated broken database reference
dackers86 Oct 7, 2025
08c19bf
fix(pubsub): added default crednetials check for pubsub service account
dackers86 Oct 7, 2025
5d159f7
fix(storage): reduced v2 function length
dackers86 Oct 7, 2025
1497aa8
fix(schedular): updated schular to the correct function naming
dackers86 Oct 7, 2025
4091d60
chore(testlab): re-enabled skipped tests
dackers86 Oct 7, 2025
c0fc076
fix(*): updated storage collection names
dackers86 Oct 7, 2025
023ddb9
feat(*): updated firebase-admin to the latets version
dackers86 Oct 7, 2025
842b6c6
fix(*): Updated v1 and v2 tests to run simultaneously without error. …
dackers86 Oct 15, 2025
f030db1
chore(*): Extract exponential backoff logic
dackers86 Oct 15, 2025
9ec5803
fix(): increased timeoutm and tasks to run v1 and v2. Updated testing…
dackers86 Oct 21, 2025
9b8f76f
Merge remote-tracking branch 'origin/@invertase/integration-test-suit…
dackers86 Oct 21, 2025
b81dc12
fix(*): updated depenendecies
dackers86 Oct 21, 2025
d180941
fix(*): updated ts config to fix import error
dackers86 Oct 21, 2025
a8fc3a2
fix(*): import and formatting updates
dackers86 Oct 21, 2025
97bc24f
test(*): skip broken tests
dackers86 Oct 21, 2025
a49f91c
fix(*): updated testing framwork config types
dackers86 Oct 21, 2025
a5076d7
fix(*): update all express imports to use default imports for Node.js…
dackers86 Oct 21, 2025
0e4d480
fix(*): update js-yaml import to use default import for Node.js 22 co…
dackers86 Oct 21, 2025
c48bd46
fix(*): updated test imports
dackers86 Oct 21, 2025
6156e05
test(*): basic cloud build test
dackers86 Oct 21, 2025
6953e6b
test(*): Run basic deployment test
dackers86 Oct 21, 2025
1839978
chore: wip vitest flow
Ehesp Nov 18, 2025
054d856
switch to firestore based events
Ehesp Dec 4, 2025
6006808
working tests
Ehesp Dec 5, 2025
4c44b6e
add auth,database tests
Ehesp Dec 9, 2025
2da70db
fix auth,https tests
Ehesp Dec 9, 2025
9844cfd
scheduler & tasks tests
Ehesp Dec 9, 2025
e67996b
add storage tests
Ehesp Dec 10, 2025
a7de0aa
Merge branch 'master' of https://github.com/firebase/firebase-functio…
Ehesp Dec 10, 2025
040f735
Merge branch 'master' of https://github.com/firebase/firebase-functio…
Ehesp Dec 10, 2025
c61a736
ensure local tarball is used
Ehesp Dec 10, 2025
5cde364
add v1 tests
Ehesp Dec 10, 2025
e19c812
Merge branch '@invertase/integration-tests' of https://github.com/fir…
Ehesp Dec 10, 2025
2d453da
Merge branch 'master' into @invertase/integration-tests
dackers86 Dec 19, 2025
12a54d7
chore(*): regenerate package lock file
dackers86 Dec 19, 2025
51cb0d2
regen lockfile on latest npm
dackers86 Dec 19, 2025
e23aeed
chore(*): reverted package lock to match master branch
dackers86 Dec 19, 2025
11fe94b
chore(*): fixed linting errors
dackers86 Dec 19, 2025
a1dfcea
chore(*): remove plan.md
dackers86 Dec 19, 2025
ae49f68
fix(integration-tests):added null checks onto tests
dackers86 Dec 19, 2025
aa5f15f
chore(*): regen integration testing lockfile
dackers86 Dec 19, 2025
26d79cf
fix(testing): fixed linting errors
dackers86 Dec 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/postmerge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ jobs:

- name: "Run integration test"
run: npm run test:postmerge
env:
PROJECT_ID: ${{ secrets.PROJECT_ID }}

- name: Print debug logs
if: failure()
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ firebase-functions-*.tgz
integration_test/.firebaserc
integration_test/*.log
integration_test/functions/firebase-functions.tgz
integration_test/functions/package.json
lib
node_modules
npm-debug.log
Expand Down
208 changes: 111 additions & 97 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,110 +3,124 @@ const js = require("@eslint/js");
const path = require("path");

const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});

module.exports = [
{
ignores: [
"lib/",
"dev/",
"node_modules/",
"coverage/",
"docgen/",
"v1/",
"v2/",
"logger/",
"dist/",
"spec/fixtures/",
"scripts/**/*.js",
"scripts/**/*.mjs",
"protos/",
".prettierrc.js",
"eslint.config.*",
"tsdown.config.*",
"scripts/bin-test/sources/esm-ext/index.mjs",
],
{
ignores: [
"lib/",
"dev/",
"node_modules/",
"coverage/",
"docgen/",
"v1/",
"v2/",
"logger/",
"dist/",
"spec/fixtures/",
"scripts/**/*.js",
"scripts/**/*.mjs",
"protos/",
".prettierrc.js",
"eslint.config.*",
"tsdown.config.*",
"scripts/bin-test/sources/esm-ext/index.mjs",
"integration_test/functions/lib/",
],
},
...compat.extends(
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:jsdoc/recommended",
"google",
"prettier"
),
{
languageOptions: {
parser: require("@typescript-eslint/parser"),
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: __dirname,
},
ecmaVersion: 2022,
},
...compat.extends(
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:jsdoc/recommended",
"google",
"prettier"
),
{
languageOptions: {
parser: require("@typescript-eslint/parser"),
parserOptions: {
project: "tsconfig.json",
tsconfigRootDir: __dirname,
},
ecmaVersion: 2022
},
plugins: {
"prettier": require("eslint-plugin-prettier"),
},
rules: {
"jsdoc/newline-after-description": "off",
"jsdoc/require-jsdoc": ["warn", { publicOnly: true }],
"jsdoc/check-tag-names": ["warn", { definedTags: ["alpha", "remarks", "typeParam", "packageDocumentation", "hidden"] }],
"no-restricted-globals": ["error", "name", "length"],
"prefer-arrow-callback": "error",
"prettier/prettier": "error",
"require-atomic-updates": "off", // This rule is so noisy and isn't useful: https://github.com/eslint/eslint/issues/11899
"require-jsdoc": "off", // This rule is deprecated and superseded by jsdoc/require-jsdoc.
"valid-jsdoc": "off", // This is deprecated but included in recommended configs.
"no-prototype-builtins": "warn",
"no-useless-escape": "warn",
"prefer-promise-reject-errors": "warn",
},
plugins: {
prettier: require("eslint-plugin-prettier"),
},
{
files: ["**/*.ts"],
rules: {
"jsdoc/require-param-type": "off",
"jsdoc/require-returns-type": "off",
// Google style guide allows us to omit trivial parameters and returns
"jsdoc/require-param": "off",
"jsdoc/require-returns": "off",
rules: {
"jsdoc/newline-after-description": "off",
"jsdoc/require-jsdoc": ["warn", { publicOnly: true }],
"jsdoc/check-tag-names": [
"warn",
{ definedTags: ["alpha", "remarks", "typeParam", "packageDocumentation", "hidden"] },
],
"no-restricted-globals": ["error", "name", "length"],
"prefer-arrow-callback": "error",
"prettier/prettier": "error",
"require-atomic-updates": "off", // This rule is so noisy and isn't useful: https://github.com/eslint/eslint/issues/11899
"require-jsdoc": "off", // This rule is deprecated and superseded by jsdoc/require-jsdoc.
"valid-jsdoc": "off", // This is deprecated but included in recommended configs.
"no-prototype-builtins": "warn",
"no-useless-escape": "warn",
"prefer-promise-reject-errors": "warn",
},
},
{
files: ["**/*.ts"],
rules: {
"jsdoc/require-param-type": "off",
"jsdoc/require-returns-type": "off",
// Google style guide allows us to omit trivial parameters and returns
"jsdoc/require-param": "off",
"jsdoc/require-returns": "off",

"@typescript-eslint/no-invalid-this": "error",
"@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" }], // Unused vars should not exist.
"@typescript-eslint/no-misused-promises": "warn", // rule does not work with async handlers for express.
"no-invalid-this": "off", // Turned off in favor of @typescript-eslint/no-invalid-this.
"no-unused-vars": "off", // Off in favor of @typescript-eslint/no-unused-vars.
eqeqeq: ["error", "always", { null: "ignore" }],
camelcase: ["error", { properties: "never" }], // snake_case allowed in properties iif to satisfy an external contract / style
"@typescript-eslint/no-invalid-this": "error",
"@typescript-eslint/no-unused-vars": [
"error",
{ argsIgnorePattern: "^_", caughtErrorsIgnorePattern: "^_" },
], // Unused vars should not exist.
"@typescript-eslint/no-misused-promises": "warn", // rule does not work with async handlers for express.
"no-invalid-this": "off", // Turned off in favor of @typescript-eslint/no-invalid-this.
"no-unused-vars": "off", // Off in favor of @typescript-eslint/no-unused-vars.
eqeqeq: ["error", "always", { null: "ignore" }],
camelcase: ["error", { properties: "never" }], // snake_case allowed in properties iif to satisfy an external contract / style

// Ideally, all these warning should be error - let's fix them in the future.
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/restrict-template-expressions": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-redundant-type-constituents": "warn",
"@typescript-eslint/no-base-to-string": "warn",
"@typescript-eslint/no-duplicate-type-constituents": "warn",
"@typescript-eslint/no-require-imports": "warn",
"@typescript-eslint/no-empty-object-type": "warn",
"@typescript-eslint/prefer-promise-reject-errors": "warn",
},
// Ideally, all these warning should be error - let's fix them in the future.
"@typescript-eslint/no-unsafe-argument": "warn",
"@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-unsafe-call": "warn",
"@typescript-eslint/no-unsafe-member-access": "warn",
"@typescript-eslint/no-unsafe-return": "warn",
"@typescript-eslint/restrict-template-expressions": "warn",
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-redundant-type-constituents": "warn",
"@typescript-eslint/no-base-to-string": "warn",
"@typescript-eslint/no-duplicate-type-constituents": "warn",
"@typescript-eslint/no-require-imports": "warn",
"@typescript-eslint/no-empty-object-type": "warn",
"@typescript-eslint/prefer-promise-reject-errors": "warn",
},
},
{
files: [
"**/*.spec.ts",
"**/*.spec.js",
"spec/helper.ts",
"scripts/bin-test/**/*.ts",
"integration_test/**/*.ts",
],
languageOptions: {
globals: {
mocha: true,
},
},
{
files: ["**/*.spec.ts", "**/*.spec.js", "spec/helper.ts", "scripts/bin-test/**/*.ts", "integration_test/**/*.ts"],
languageOptions: {
globals: {
mocha: true,
},
},
rules: {
"@typescript-eslint/no-unused-expressions": "off",
}
rules: {
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/no-unnecessary-type-assertion": "off",
},
},
];
72 changes: 72 additions & 0 deletions integration_test/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Ignored as the test runner will generate this file
firebase.json

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
firebase-debug.log*
firebase-debug.*.log*

# Firebase cache
.firebase/

# Firebase config

# Uncomment this if you'd like others to create their own Firebase project.
# For a team working on the same Firebase project(s), it is recommended to leave
# it commented so all members can deploy to the same project(s) in .firebaserc.
# .firebaserc

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# dataconnect generated files
.dataconnect
22 changes: 0 additions & 22 deletions integration_test/README.md

This file was deleted.

Loading