va-gov/web

VA.gov 的前端。此仓库包含生成 www.va.gov 网站的代码。它包含一个使用 Drupal CMS 内容的 Metalsmith 静态站点构建器。此文件在此是为了发布到 https://packagist.org.cn/packages/va-gov/web,以便 CMS CI 系统可以安装它

安装次数: 14,079

依赖项: 0

建议者: 0

安全性: 0

星标: 238

关注者: 213

分支: 124

公开问题: 145

语言:JavaScript

类型:node-project

v0.1.1796 2021-05-13 20:10 UTC

This package is auto-updated.

Last update: 2024-09-15 01:43:10 UTC


README

目录

这是什么?

这是 VA.gov 的前端仓库。它包含用于网站全站的代码。

有几个仓库包含构建 VA.gov 所需的代码和内容。如果您想开始在本地运行 VA.gov,请阅读入门文档。

常用命令

一旦您在本地设置好了网站,以下是一些您可能觉得有用的常用命令

构建 vets-website

构建应用程序

vets-website 使用 Webpack 打包应用程序资产。

构建所有应用程序,运行以下命令

yarn build

构建一个或多个应用程序,您可以使用 --entry 选项

yarn build --entry=static-pages,auth

在您做出更改时重新编译应用程序,运行

yarn watch

您还可以使用 --env entry 限制 Webpack 构建的应用程序

yarn watch --env entry=static-pages,auth

您应用程序的 entryname 可在 manifest.json 文件中找到。

如果您正在开发需要 API 但无法或不想在本地运行的功能,可以指定 --env api

yarn watch --env api=https://dev-api.va.gov

当使用非本地 API 时,您需要在浏览器中禁用 CORS。以下是一些说明如何做到这一点的有用链接

注意:如果您尝试登录,ID.me 将将您重定向到 API 已设置的相应环境。因此,在上面的示例中,您将被重定向回 dev.va.gov。

构建静态内容

静态页面是从 content-build 仓库创建的。请参阅 构建静态内容 文档。

同时构建两者

构建应用程序 之后,在 ../content-build 目录中运行 yarn build 将使用从 vets-website/build/localhost/generated 生成的应用程序包构建内容。完整的构建可以在 ../content-build/build/localhost 中查看。

在 GitHub Codespaces 中工作

阅读此仓库的 Codespaces 文档.

运行测试

单元测试

运行所有单元测试,使用

yarn test:unit

如果您只想 运行一个测试文件,可以提供其路径

yarn test:unit src/applications/path/to/test-file.unit.spec.js

运行 src/applications 目录中文件夹的所有测试,可以使用 app-folder

yarn test:unit --app-folder hca

运行目录中的所有测试,可以使用 glob 模式

yarn test:unit src/applications/path/to/tests/**/*.unit.spec.js*

要运行带有堆栈跟踪的测试,请传递日志级别 trace

yarn test:unit --log-level trace

要运行带有覆盖率输出的测试,您可以传递覆盖率选项

yarn test:unit --coverage

要运行带有覆盖率和在浏览器中打开特定应用的覆盖率报告的测试,请从 src/applications 运行

yarn test:coverage-app {app-name}

关于测试运行器使用的帮助,您可以运行

yarn test:unit --help

端到端(E2E)/浏览器测试

  • Cypress 运行 E2E 或浏览器测试

在运行 Cypress 测试之前,请确保

  1. vets-website 在本地上 3001 端口运行
    • 您可以使用 yarn watch 来完成此操作
  2. vets-api 在运行
    • 任何必需的 API 都将由需要它们的 Cypress 测试进行模拟。

要打开 Cypress 测试运行器 UI 并在其中运行任何测试

yarn cy:open

要打开 Codespaces 中的 Cypress 测试运行器 UI 并在其中运行任何测试

yarn cy:open-codespaces

然后访问 https://:6080/ 并使用密码 vscode 登录。

要使用命令行运行 Cypress 测试

yarn cy:run

要使用命令行运行特定的 Cypress 测试

# Running one specific test.
yarn cy:run --spec "path/to/test-file.cypress.spec.js"

# Running multiple specific tests.
yarn cy:run --spec "path/to/test-a.cypress.spec.js,path/to/test-b.cypress.spec.js"

# Running tests that match a glob pattern.
yarn cy:run --spec "src/applications/my-app/tests/*"
yarn cy:run --spec "src/applications/my-app/tests/**/*"

# Running tests that match multiple glob patterns.
yarn cy:run --spec "src/applications/a/tests/**/*,src/applications/b/tests/**/*"

要使用命令行在特定浏览器上运行 Cypress 测试

yarn cy:run --browser chrome
yarn cy:run --browser firefox

要使用报告运行 Cypress 测试

yarn cy:run:localreports my-app-folder

示例

  • yarn cy:run:localreports appeals/995
  • yarn cy:run:localreports ask-a-question

之后,检查 /mochawesome-report 内容。

有关 yarn cy:run 的其他选项,请参阅 cypress run 的相同选项.

更改虚拟代理后端 URL

如果没有,请在项目的根目录中创建一个 .env 文件,并在更新 URL 时添加以下内容

VIRTUAL_AGENT_BACKEND_URL=https://some.url.com

运行本地开发的模拟 API

从您本地的开发服务器中分离的终端运行

yarn mock-api --responses path/to/responses.js

有关如何使用 responses.js 的信息,请参阅 mocker-api 使用文档.

如果您需要登录,请转到浏览器开发工具控制台并输入 localStorage.setItem('hasSession', true) 并刷新页面。这将会触发一个 /v0/user 调用,然后获取已登录用户的模拟响应。(当然,假设您已模拟该响应。)

对常见的 API 请求的响应,如 /v0/user/v0/maintenance_windows,您可以使用 src/platform/testing/local-dev-mock-api/common.js

const commonResponses = require('src/platform/testing/local-dev-mock-api/common');

module.exports = {
  ...commonResponses,
  'GET path/to/endpoint': { foo: 'bar' },
};

更多命令

经过一段时间后,您可能会遇到一个不太常见的问题。我们有很多命令来做非常具体的事情。

支持的浏览器

API 密钥

为了在本地使用设施定位器,您需要一个具有开发访问权限的 Mapbox API 密钥。有关处理非公开密钥和令牌的详细信息,请参阅 此链接。您需要访问 AWS 系统管理器中的参数存储,并从以下位置获取开发 Mapbox 令牌:/dsva-vagov/vets-website/dev/mapbox_token。

在 vets-website 的根目录中创建一个 .env 文件,并将上述令牌分配给名为 MAPBOX_TOKEN 的变量。.env 文件应该已经配置为与 dotenv 一起用于 webpack。确保 .env 文件在 .gitignore 中,并注意不要在任何公共提交中泄露此令牌。有关请求 AWS 访问的说明,请参阅 此链接

其他资源

  1. 前端开发者文档主页
  2. 手册自动化 508 测试
  3. 使用 yarn Workspaces

不是仓库成员但想加入吗?

  • 如果您在 VA.gov 平台团队中,请联系您的项目经理。
  • 如果您在 VFS 团队中,您必须完成 平台入门培训 才能加入此仓库。这包括在 GitHub 中完成您的平台入门培训票据。