UNPKG

@graphql-hive/federation-gateway-audit

Version:
113 lines (75 loc) 3.95 kB
# Federation-Compatible Gateway Implementations This repository contains a set of tests to evaluate and compare the compatibility of different GraphQL gateways with Apollo Federation. [🌐 See the results of our audit](https://the-guild.dev/graphql/hive/federation-gateway-audit) [📖 Read more about our methodology and why we created this audit](https://the-guild.dev/graphql/hive/federation-gateway-audit#manifesto) <!-- gateways:start --> | Gateway | Compatibility | Test Cases | Test Suites | | :---------------------------------------------------------------------------------------------------------: | :-----------: | :----------: | :---------: | | [Hive Router](https://github.com/graphql-hive/router) | 100.00% | 🟢 199 | 🟢 46 | | [Hive Gateway](https://the-guild.dev/graphql/hive/gateway) | 98.99% | 🟢 197 ❌ 2 | 🟢 45 ❌ 1 | | [Hive Gateway (Rust QP)](https://the-guild.dev/graphql/hive/docs/gateway/other-features/rust-query-planner) | 98.49% | 🟢 196 ❌ 3 | 🟢 44 ❌ 2 | | [Apollo Router](https://www.apollographql.com/) | 97.49% | 🟢 194 ❌ 5 | 🟢 43 ❌ 3 | | [Apollo Gateway](https://www.apollographql.com/) | 96.98% | 🟢 193 ❌ 6 | 🟢 42 ❌ 4 | | [Cosmo Router](https://wundergraph.com) | 91.96% | 🟢 183 ❌ 16 | 🟢 37 ❌ 9 | | [Grafbase Gateway](https://grafbase.com) | 90.45% | 🟢 180 ❌ 19 | 🟢 39 ❌ 7 | <!-- gateways:end --> [See the full report](./REPORT.md) ## Apollo Federation Coverage The tests are based on the Apollo Federation specification and cover the following directives: - `@interfaceObject` - `@key` - `@external` - `@provides` - `@requires` - `@extends` - `@inaccessible` - `@shareable` - `@skip` - `@include` - `@composeDirective` - `@override` **Out of scope (limited by Enterprise license of Apollo Router):** We are not able to test the following directives on Apollo Router due to the limitations of the Enterprise license: - `@authenticated` - `@policy` - `@requiresScopes` - `@override(label:)` We plan to test these directives as soon as we have access to the Enterprise license. --- ## CLI > TODO: we're working on a CLI to make it easier to run the tests, stay tuned! --- ## Instructions First of all, you need to install and prepare the gateways. You can do this by running the following command: ```bash make install ``` > [!IMPORTANT] > Be aware that `Node` and `npm` are required to run the whole setup. ### Testing all gateways You can run the tests for each gateway by running the following command: ```bash make test-all ``` ### Testing a specific gateway You can run the tests for a specific gateway by running the following command: ```bash make test-[name of the gateway] make test-grafbase-gateway make test-cosmo-router make test-hive-gateway make test-hive-gateway-router-runtime make test-apollo-router ``` ### Running a gateway for a single test suite In case you want to run only a limited set of tests, you can do so by running the following command: ```bash make test-suite-[name of the gateway] TEST_SUITE=[id of the test suite] ``` ### Running a gateway for a specific supergraph There's also the possibility to start a gateway for a selected supergraph, in case you want to run the queries yourself. ```bash make run-[name of the gateway] TEST_SUITE=[id of the test suite] ``` ## Contributing or adding a new gateway [See the contributing guide](./.github/CONTRIBUTING.md)