Как получить полный список маршрутов / конечных точек Gatsby. js в тестах Cypress - PullRequest
0 голосов
/ 18 февраля 2020

В настоящее время я пишу некоторые тесты E2E с Cypress для проекта на основе Gatsby.

В частности, для одного теста я бы хотел l oop просмотреть все страницы моего сайта Gatsby, и чтобы Для этого мне нужен тестовый прибор (например, endpoints.json), который включает в себя массив всех URL.

Я пробовал следующие методы (но у всех есть ограничения):

1. Запуск сценария узла для проверки структуры папки в папке src/pages

Ограничение - это не учитывает динамически генерируемые страницы в gatsby-node.js с graphql

2. Запуск сценария узла для очистки URL-адресов в файле sitemap.xml, созданном с gatsby-plugin-sitemap

Ограничение - Плагин генерировал файл sitemap. xml только в сборках prod, а не в dev (cypress запускается) сервер разработки)

Был бы более чем признателен, если бы у кого-нибудь было предложение, как нам получить полный список конечных точек Gatsby в этой среде.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Существует довольно крутой новый плагин для Cypress, который позволит вам получить конечные точки в ваших приборах и переменной env, называемые gatsby-cypress-endpoints . Ответ coreyward совершенно верен, но это должно позволить вам получать конечные точки только при запуске Cypress.

0 голосов
/ 19 февраля 2020

Вы можете просто сгенерировать файл в нужном формате при сборке, используя данные в GraphQL:

// gatsby-node.js
const path = require("path")
const fs = require("fs").promises

exports.onPostBuild = async ({ graphql }) => {
  const { data } = await graphql(`
    {
      pages: allSitePage {
        nodes {
          path
        }
      }
    }
  `)

  return fs.writeFile(
    path.resolve(__dirname, "all-pages.txt"),
    data.pages.nodes.map(node => node.path).join("\n")
  )
}

Это создаст файл .txt с путем каждой страницы в строке. Вы также можете просто записать данные как JSON, передав JSON.stringify(data.pages) в качестве второго аргумента writeFile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...