| Gateway | Compatibility | Test Cases | Test Suites |
|---|---|---|---|
| Hive Router | 100.00% | 🟢 199 | 🟢 46 |
| Hot Chocolate Fusion | 100.00% | 🟢 199 | 🟢 46 |
| Hive Gateway | 98.99% | 🟢 197 ❌ 2 | 🟢 45 ❌ 1 |
| Hive Gateway (Rust QP) | 98.49% | 🟢 196 ❌ 3 | 🟢 44 ❌ 2 |
| Apollo Router | 97.49% | 🟢 194 ❌ 5 | 🟢 43 ❌ 3 |
| Apollo Gateway | 96.98% | 🟢 193 ❌ 6 | 🟢 42 ❌ 4 |
| Cosmo Router | 91.96% | 🟢 183 ❌ 16 | 🟢 37 ❌ 9 |
| Grafbase Gateway | 90.45% | 🟢 180 ❌ 19 | 🟢 39 ❌ 7 |
Take a closer look at the results for each gateway.
You can look at the full list of tests here. Every test id corresponds to a directory in the src/test-suites folder.
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
🟢🟢🟢🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
🟢requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
🟢🟢🟢🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
🟢requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
❌❌🟢🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
🟢requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
❌❌partial-union-complex
🟢🟢🟢🟢❌provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
🟢requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
❌mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
🟢🟢🟢🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢❌❌❌requires-with-argument-conflict
❌requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
🟢interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
❌mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢❌🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
🟢🟢🟢🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢❌❌❌requires-with-argument-conflict
❌requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
❌❌❌🟢circular-reference-interface
🟢🟢complex-entity-call
❌corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
❌interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢❌🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
🟢🟢🟢🟢override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
❌partial-union
🟢🟢partial-union-complex
❌❌❌❌🟢provides-on-interface
❌❌provides-on-union
❌❌requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
❌requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
Results
abstract-types🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢child-type-mismatch
🟢🟢🟢🟢circular-reference-interface
🟢🟢complex-entity-call
🟢corrupted-supergraph-node-id
❌🟢❌🟢🟢❌🟢🟢🟢🟢enum-intersection
🟢🟢🟢🟢🟢fed1-external-extends
🟢🟢🟢🟢fed1-external-extends-resolvable
🟢fed1-external-extension
🟢🟢🟢🟢fed2-external-extends
🟢🟢🟢🟢fed2-external-extension
🟢🟢🟢🟢include-skip
🟢🟢🟢🟢input-object-intersection
🟢🟢🟢interface-object-indirect-extension
❌interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢keys-mashup
🟢mutations
🟢🟢🟢🟢mysterious-external
🟢🟢nested-provides
🟢🟢node
🟢non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢null-keys
🟢override-type-interface
❌❌❌❌override-with-requires
🟢🟢🟢🟢parent-entity-call
🟢parent-entity-call-complex
🟢partial-union
🟢🟢partial-union-complex
❌❌❌🟢🟢provides-on-interface
🟢🟢provides-on-union
🟢🟢requires-circular
🟢🟢requires-interface
🟢🟢🟢🟢🟢requires-requires
🟢🟢🟢🟢🟢requires-with-argument
🟢🟢🟢🟢🟢requires-with-argument-conflict
❌requires-with-fragments
🟢🟢🟢🟢🟢🟢shared-root
🟢🟢simple-entity-call
🟢simple-inaccessible
🟢🟢🟢🟢simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢❌❌❌❌❌simple-override
🟢🟢simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢typename
🟢🟢🟢🟢🟢🟢unavailable-override
🟢🟢union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢❌🟢🟢❌