type ComplicatedArgs { multipleReqs(req1: Int!, req2: Int!): String multipleOptAndReq(req1: Int!, req2: Int!, opt1: Int = 0, opt2: Int = 0): String } type Basic { a: Int! } type Query { basic: Basic complicatedArgs: ComplicatedArgs } fragment Y on ComplicatedArgs { multipleReqs } fragment Z on ComplicatedArgs { onlyOneArg: multipleReqs(req2: 1) } query complicatedArgs { basic @skip @include(wrong: false) { a } complicatedArgs { a: multipleReqs(req2: 1) b: multipleOptAndReq(req1: 1) c: multipleOptAndReq(opt1: 1, opt2: 1, req1: 1) } } query complicatedArgsOnFragments { complicatedArgs { ...Y ...Z } }