Перейти к содержанию
QAForgeAI QA Workspace

GraphQL — отдельный контрактный контекст

Тест-кейсы для GraphQL без подмены REST-понятиями

QAForge удерживает GraphQL-понятия отдельно от REST: operation, variables, schema types, nullability, enums и сочетание data/errors. Негативные и authorization checks добавляются только когда их поддерживает задача или контрактный контекст.

  • GraphQL
  • Queries
  • Mutations
  • Variables
  • data/errors

Рабочий процесс

Как использовать QAForge

  1. Шаг 1

    Добавьте GraphQL-контекст

    Передайте задачу вместе со schema, query, mutation или introspection evidence, которое относится к проверяемому поведению.

  2. Шаг 2

    Проверьте форму контракта

    Сверьте operations, variables, types, enums и nullable/non-null поля, найденные до генерации.

  3. Шаг 3

    Проведите GraphQL-ревью

    После генерации проверьте data/errors, partial responses, pagination и права только в пределах подтверждённого контекста.

По существу

Что учитывает этот сценарий

Query и mutation

Query читает данные, mutation изменяет состояние. Проверки учитывают выбранные поля, аргументы и побочный эффект операции.

Variables

Variables проверяются по GraphQL-типам, обязательности, nullability и допустимым значениям, а не как REST query parameters.

Nullable и non-null

Nullable и non-null поля требуют разных ожиданий: null может быть допустимым значением или приводить к распространению ошибки вверх по response tree.

Enums

Enums ограничивают набор значений на уровне schema. Невалидное значение должно проверяться отдельно от бизнес-отказа resolver.

data и errors

GraphQL может вернуть data и errors одновременно. Partial response нельзя описывать как обычный HTTP error body.

Pagination и authorization

Если schema и задача задают pagination, проверяются cursor/page boundaries, порядок, пустая страница и стабильность перехода.

Компактный пример

GraphQL: список заказов

Исходный контекст

Задача описывает список заказов с фильтром по статусу, cursor pagination и ограничением поля total для роли Support.

query Orders($status: OrderStatus!, $after: String) {
  orders(status: $status, after: $after) {
    nodes { id status total }
    pageInfo { endCursor hasNextPage }
  }
}

Успешный query

Валидный status возвращает orders в response.data, поля соответствуют selection set и enum.

Non-null variable

Пропущенный обязательный status не выполняет operation и возвращает schema validation error.

Partial data и authorization

Пользователь без права видеть total получает ожидаемое сочетание null в data и записи в errors, если это задано политикой задачи.

Cursor pagination

after указывает на последний элемент страницы; следующая страница не дублирует items и корректно меняет pageInfo.

Границы и ответственность

Результат требует QA-ревью

  • GraphQL schema описывает типы и операции, но не заменяет бизнес-правила resolver, права ролей и политику ошибок.
  • QAForge не трактует HTTP statuses, REST paths или request body как GraphQL operation semantics.
  • Pagination и authorization checks включаются, когда соответствующие поля и ожидания есть в задаче или evidence.
  • Сгенерированный результат нужно проверить по актуальной schema и окружению перед использованием или импортом.

Связанные сценарии

Продолжить по вашей задаче

Посмотрите подход на готовом примере

Готовый пример открывает существующее рабочее пространство без регистрации и без внешнего провайдерного вызова.

Открыть пример QAForge