Query и mutation
Query читает данные, mutation изменяет состояние. Проверки учитывают выбранные поля, аргументы и побочный эффект операции.
GraphQL — отдельный контрактный контекст
QAForge удерживает GraphQL-понятия отдельно от REST: operation, variables, schema types, nullability, enums и сочетание data/errors. Негативные и authorization checks добавляются только когда их поддерживает задача или контрактный контекст.
Рабочий процесс
Шаг 1
Передайте задачу вместе со schema, query, mutation или introspection evidence, которое относится к проверяемому поведению.
Шаг 2
Сверьте operations, variables, types, enums и nullable/non-null поля, найденные до генерации.
Шаг 3
После генерации проверьте data/errors, partial responses, pagination и права только в пределах подтверждённого контекста.
По существу
Query читает данные, mutation изменяет состояние. Проверки учитывают выбранные поля, аргументы и побочный эффект операции.
Variables проверяются по GraphQL-типам, обязательности, nullability и допустимым значениям, а не как REST query parameters.
Nullable и non-null поля требуют разных ожиданий: null может быть допустимым значением или приводить к распространению ошибки вверх по response tree.
Enums ограничивают набор значений на уровне schema. Невалидное значение должно проверяться отдельно от бизнес-отказа resolver.
GraphQL может вернуть data и errors одновременно. Partial response нельзя описывать как обычный HTTP error body.
Если schema и задача задают pagination, проверяются cursor/page boundaries, порядок, пустая страница и стабильность перехода.
Компактный пример
Задача описывает список заказов с фильтром по статусу, cursor pagination и ограничением поля total для роли Support.
query Orders($status: OrderStatus!, $after: String) {
orders(status: $status, after: $after) {
nodes { id status total }
pageInfo { endCursor hasNextPage }
}
}Валидный status возвращает orders в response.data, поля соответствуют selection set и enum.
Пропущенный обязательный status не выполняет operation и возвращает schema validation error.
Пользователь без права видеть total получает ожидаемое сочетание null в data и записи в errors, если это задано политикой задачи.
after указывает на последний элемент страницы; следующая страница не дублирует items и корректно меняет pageInfo.
Границы и ответственность
Связанные сценарии
Готовый пример открывает существующее рабочее пространство без регистрации и без внешнего провайдерного вызова.