Probably worth adding to the examples...
typeof undefined === "undefined"
typeof NaN === "number"
NaN in particular, along with Invalid Date can be interresting corner cases in practice. I find it's often best to rely on coercion and input validation over type checking.
The first followup to this should probably be falsey values, and how knowing them is useful for input validation.
Venturing OT, but if you're doing end to end tests, I would suggest getting familiar with Docker, docker-compose and its' usage. It's very easy to stand-up your entire environment, run your tests, and stand-down said environment. Many CI/CD runners have a full docker environment available, so this makes integration super easy as well.
I wouldn't suggest using this library/approach. First, read/write in your application directory is begging for trouble. Second, it's using an array lookup instead of an object/map. Third, it's not very flexible.
Alternatively to using Firebae... Self-hosting CockroachDB, FaunaDB, Cloudflare KV+Workers, Azure Storage Tables, DynamoDB and other databases behind an API or Cloudflare Workers are some other options as well for backend storage.