如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户?

发布时间:2026/11/9 11:32:09

如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户? 如何用 seed-demo-user 为 freeCodeCamp E2E 测试种子化认证演示用户【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp在 freeCodeCamp 仓库中跑 Playwright E2E 测试时测试需要以已登录状态访问页面而登录凭据来自数据库里预置的演示用户。seed-demo-user 脚本负责把固定 ID 的演示用户写入 MongoDBe2e/global-setup.ts 再调用它并抓取会话生成playwright/.auth/下的 storage state 文件供后续测试用例复用。本文说明如何在本地为 E2E 测试种子化认证用户certifieduser及开发用户developmentuser并给出可用的检查手段。前提条件脚本读取根目录的.env文件seed-demo-user.js 第 7 行显式解析../../../.env并依赖其中的MONGOHQ_URL连接 MongoDB。仓库根目录的 sample.env 给出了本地默认值MONGOHQ_URLmongodb://127.0.0.1:27017/freecodecamp?directConnectiontrue按 sample.env 复制出.envcp sample.env .env并确保 127.0.0.1:27017 上有一个可用的 MongoDB 实例。连接串指向的库名必须是freecodecamp脚本第 103 行使用client.db(freecodecamp)在user和UserToken集合中读写。E2E 侧还有两个已文档化的依赖e2e/playwright.config.ts 的baseURL取HOME_LOCATION默认http://127.0.0.1:8000API_LOCATION在 sample.env 中默认为http://localhost:3000。global-setup 用API_LOCATION请求/signin接口因此执行 setup 时本地 API 需可访问。配置中webServer会自动docker run --rm -p 1025:1025 -p 8025:8025 axllent/mailpit用于接收测试中 API 发出的邮件需要本地有 Docker。脚本写入哪些用户用户文档定义在 tools/scripts/seed/user-data.js共 6 个固定ObjectId的用户用户_id邮箱用户名demoUser默认种子用户5bd30e0f1caf6ac3ddddddb5foobar.comdevelopmentuserfullyCertifiedUser5fa2db00a25c1c1fa49ce067foobar.comcertifieduserblankUser5bd30e0f1caf6ac3ddddddb9barbar.comtwahapublicUser663b839b24a8b29f57728b13barbars.compublicuseralmostFullyCertifiedUser同 blankUserId——unclaimedUser5bd30e0f1caf6ac3ddddddb1——unclaimedUser与almostFullyCertifiedUser都是fullyCertifiedUser的展开变体user-data.js 第 76915、76931 行。注意demoUser与fullyCertifiedUser使用同一个邮箱foobar.com。这正是 global-setup.ts 第 25-26 行注释说明的现象legacy 认证接口不带邮箱查询它登录的是当前拥有 foobar.com 的那个种子用户所以两次种子化切换了登录身份。脚本的执行逻辑运行脚本会按 seed-demo-user.js 的run()顺序执行client.db(admin).command({ ping: 1 })验证 Mongo 连通性调试日志输出Connected successfully to mongodropUserTokens()从UserToken集合删除上述 6 个userIds对应的全部 token 记录dropUsers()从user集合删除这 6 个_id对应的用户按命令行参数插入所选用户见下表随后无条件再插入blankUser和publicUser调试日志输出local auth user seed complete。出错时脚本打印Oh noes!! Error seeding local auth user.并process.exit(1)。重要副作用每次运行都会删除这 6 个固定 ID 用户在user和UserToken集合中的既有记录属于破坏性写入。请勿把MONGOHQ_URL指向存有真实业务数据的库在共享环境执行前确认库中可安全重置这些种子 ID。参数与用户变体parseArgs定义的选项seed-demo-user.js 第 18-26 行参数类型效果--certified-userboolean改为插入fullyCertifiedUser--almost-certified-userboolean改为插入almostFullyCertifiedUser--unclaimed-userboolean改为插入unclaimedUser以上都不传—默认插入demoUser--top-contributorboolean给 demoUser、blankUser、fullyCertifiedUser 设置yearsTopContributor: [2017, 2018, 2019]--set-true key...string, multiple把指定键设为true作用于上述三个用户--set-false key...string, multiple把指定键设为false--seed-trophy-challengesboolean用脚本内置的 6 条奖杯挑战记录覆盖completedChallenges四个变体是互斥的if / else if / else分支一次只插入一种主用户但blankUser、publicUser每次都会插入。E2E 全局 setup 实际使用的两条命令从仓库根目录执行等价于 global-setup.ts 中的相对路径写法node tools/scripts/seed/seed-demo-user --certified-user node tools/scripts/seed/seed-demo-user第二条不带任何 flag种子化的是developmentuser邮箱同为foobar.com认证标志为 false。E2E 如何消费种子用户e2e/playwright.config.ts 配置了一个名为setup的项目testMatch: global-setup.ts且 chromium/firefox/webkit 及两个移动端项目都声明dependencies: [setup]——即任何浏览器测试执行前Playwright 先完整跑一遍 global-setup。e2e/global-setup.ts 包含两个describe块按文件顺序执行certifieduser块beforeAll中execSync(node ../tools/scripts/seed/seed-demo-user --certified-user )种子化认证用户setup 测试请求API_LOCATION /signin再把请求上下文中的会话写入playwright/.auth/certified-user.json。developmentuser块先强制空 storage state避免继承上一个块里认证用户的 cookiebeforeAll执行无参脚本把foobar.com的所有者切回developmentuser登录并写入playwright/.auth/development-user.jsonafterAll再执行一次--certified-user恢复默认状态。恢复默认是有意为之的playwright.config.ts中use.storageState的全局默认值就是playwright/.auth/certified-user.json后续所有用例默认以认证用户身份运行。另外配置中workers: 1且fullyParallel: false因为 setup 对数据库状态是全局改写的串行执行才能保证登录身份不被并发用例打乱。运行与验证在仓库根目录执行工作目录不影响脚本定位.env因为它按脚本自身位置解析node tools/scripts/seed/seed-demo-user --certified-user判断结果的手段按文档实际提供的脚本退出码与错误输出失败时打印Oh noes!! Error seeding local auth user.并以非零码退出process.exit(1)未报错即完成第 4、5 步的插入。debug 日志脚本使用debug(fcc:tools:seedLocalAuthUser)设置DEBUGfcc:tools:seedLocalAuthUser后可看到Connected successfully to mongo与local auth user seed complete两条日志seed-demo-user.js 第 124、141 行。E2E 全链路验证运行 Playwright 时setup项目成功、两个can sign in测试通过、且生成了playwright/.auth/certified-user.json与playwright/.auth/development-user.json说明种子用户、登录接口与会话持久化都工作正常依赖certified-user.json的浏览器用例随后即可在HOME_LOCATION页面以certifieduser身份访问。限制与注意事项脚本对 6 个固定_id做删除后插入重复运行是幂等的但会清除这些 ID 的旧 token 与旧数据--set-true/--set-false/--top-contributor/--seed-trophy-challenges只作用于demoUser、blankUser、fullyCertifiedUser三个对象对unclaimedUser、almostFullyCertifiedUser无效seed-demo-user.js 第 86-99 行的forEach列表global-setup.ts中的execSync使用相对路径node ../tools/scripts/...因此 Playwright 必须按配置从e2e/目录启动Playwright 默认以配置文件所在目录为基准手动执行脚本时则可用仓库根目录下的完整相对路径种子用户与登录接口依赖本地 APIAPI_LOCATION可达setup 阶段 API 未启动会直接表现为登录请求失败。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/9 11:32:09

智能制造培训PPT设计:从技术转化到落地实践

1. 项目概述 "智能制造建设培训方案(PPT)"这个项目标题看似简单,实则包含了一个正在蓬勃发展的行业需求。作为在工业数字化转型领域摸爬滚打多年的从业者,我见过太多企业投入巨资购买智能设备后,却因为员工认…

2026/11/9 0:08:56

Java Web访客登记系统课程设计:从数据库建模到Servlet+JSP部署

简介:基于Java Web的公司访客登记系统是一份完整的课程设计资源包,面向正在学习Java Web开发的学生以及需要快速构建访客管理应用的新手开发者。系统覆盖访客信息的添加、修改、删除、检索查询和分类统计五大核心功能,通过表单处理、数据库读…

2026/11/9 11:30:12

1000块办电工证多少钱能拿下低压电工证

1000块办电工证多少钱能拿下低压电工证 之前考的证在外省能不能转过来?这可能是你第一次听说“1000块办电工证”时最关心的问题。其实,很多人的电工证都是在外地考的,但如今回老家找工作、创业、报考其他资格证都需要本地证,所以证书的…

2026/11/9 11:30:12

清丰高低压电工证网上查询流程全解析,实操考试心里没底怕挂科?

清丰高低压电工证网上查询流程全解析,实操考试心里没底怕挂科? 实操考试心里没底怕挂科,这是很多准备报考清丰高低压电工证的学员共同的困扰。尤其是从其他行业转岗过来的学员,比如商丘地区的电工转岗者,对考试流程、考试内容、复审条件等信息都不熟悉,…

2026/11/9 11:30:12

修理高压电工证多久拿证?怕考不过白交培训费看这篇就够了

修理高压电工证多久拿证?怕考不过白交培训费看这篇就够了 你是不是正盯着“修理高压电工证”的报考信息,心里打鼓:“我怕考不过,白交培训费?”别急,这篇文章就是帮你把“修理高压电工证”这事说透、讲明白,从报名到拿证,再到怎么避坑,全部给你安排上…

2026/11/9 11:25:12

杭州特种工找工作报名避坑良心建议

杭州特种工找工作报名避坑良心建议 不知道去哪报名怕被中介坑?杭州特种工找工作,报名流程复杂、培训机构鱼龙混杂,很多人都踩过坑。今天这条内容,就从杭州本地角度出发,结合郑州劳务班组负责人的实际经验,给你一套 良心建议…

2026/11/9 0:37:55

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/9 0:03:09

建设厅的特种工有哪些含金量高?别交完钱考不过

建设厅的特种工有哪些含金量高?别交完钱考不过 怕考不过白交培训费?别急,先搞清楚建设厅的特种工有哪些含金量高的证,再决定是不是值得投入时间和金钱。 建设厅的特种工证是建筑行业里最基础、也最实用的证书之一,涉及多个作业类别,每种证的 含金量…

2026/11/9 0:03:09

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱 怕考不过白交培训费?荆门市电工证报名前必须知道这些避坑指南。别看网上一堆培训机构广告,真要报个电工证,很多人被坑得一塌糊涂。特别是那些打着“包过”旗号的,最后不是考试不过,就是证不是全国通…

2026/11/9 0:03:09

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑 不知道去哪报名怕被中介坑?你不是一个人。现在特种作业证报名渠道五花八门,从线下培训机构到线上代理,真假难辨。尤其是像高空电工作业这类高风险、高门槛的作业类型,证书含金量和考试通过率直接影响你…

2026/11/9 6:30:27

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑