- 博客(157)
- 收藏
- 关注
原创 使用Sphinx搭建本地(window)文档并把它部署到网上(github)-本地搭建(1)
这里写自定义目录标题背景操作准备环境搭建工程参考链接背景操作准备环境安装python(link)注意安装的时候选择pip安装Sphinx,两种方法link2.1 直接使用命令行(Ctrl+R)pip install -U sphinx2.2 或者用git下载再安装pip install git+https://github.com/sphinx-doc/sphinx搭建工...
2020-03-16 18:29:42
1760
原创 [Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
页面报错,到底是前端还是后端背锅?这篇用 Playwright 的request直连后端,带你从跑通第一条/health测试开始,一步步搞懂。全程,新手照着抄就能跑。
2026-11-03 13:30:07
349
原创 [Playwright] [15]CI/CD 实战:Docker Compose + GitHub Actions 自动运行 E2E 测试
手动触发 GitHub Actions → Docker Compose 启动应用 → 检查服务就绪 → Playwright 执行 E2E 测试 → 上传报告 → 清理环境。通过这套流程,我不再需要每次手动启动应用并执行测试,也可以在 GitHub Actions 中查看测试结果。目前 Workflow 使用手动触发。如果有权限,理想中应该增加push或触发条件,让代码每次git push更新时自动执行 E2E 测试。
2026-11-02 00:31:01
219
原创 [Playwright] [14]playwright.config.ts 实战:Project Dependencies 与 Teardown
通过,我将多个测试模块组织为独立的 Projects,并使用 Project Dependencies 管理执行依赖,通过 Teardown 安排测试数据清理。自动化测试不仅需要保证单个用例正确,还需要考虑整个测试套件的执行顺序和数据生命周期。相比依靠测试文件的排列顺序,显式声明依赖关系更加清晰,也更方便后续集成到 CI/CD 流程中。
2026-11-02 00:30:19
464
原创 [Playwright][13] 测试数据管理:如何自动清理 E2E 测试数据?
为保障HPC Dashboard E2E测试环境纯净,编写clearTestData-validation.spec.ts清理自动化测试数据。通过统一前缀(如playwright-job-)标识测试数据,利用while循环结合XPath与定位器作用域逐条删除Job及Recurring Job,并通过toHaveCount(0)验证删除成功。删除Recurring Job时配合page.once('dialog')处理确认弹窗。该方案基于UI操作,简洁有效,适用于当前项目规模,未来可升级为API清理以提升效率
2026-11-01 04:13:41
144
原创 [Playwright][12] 踩坑记录:为什么 locator.count() 不会自动等待
这次实践让我认识到,Playwright 的 Locator 方法和自动重试断言并不是一回事。对于异步加载或动态更新的页面,应该优先使用expect()提供的自动重试断言,而不是通过固定等待时间或立即读取数量来判断页面状态。
2026-11-01 04:12:55
150
原创 用 AI 对话造出一个网页应用:WorkBuddy 全程驱动「破冰卡片」开发实录
本文记录了作者在1024程序员节用AI编程搭档WorkBuddy,全程通过自然语言对话,零手写代码打造微信小程序“破冰卡片”的全过程。项目实现双人实时同步抽卡、默契报告生成、海报图鉴与主题系统等完整功能。借助WorkBuddy的Agent模式,从架构搭建到细节打磨均由AI自动完成,极大降低开发门槛,提升迭代效率。文章揭示了AI编程正重塑开发者角色——从写代码转向定义需求,真正实现“说清楚,它就做”。
2026-11-01 04:06:30
408
原创 [Playwright][11]事件监听实战:Download 下载与 Dialog 弹窗处理
这两种操作都需要在触发事件之前做好准备,但处理方式有所不同。
2026-10-31 00:15:46
150
原创 [Playwright][10]Locator 实战:使用 XPath ancestor 精准定位 Job Card
在 HPC Dashboard 的 Job Explorer 模块中,页面会展示多个 Job Card,每个卡片都有等操作按钮。如果直接定位按钮,可能匹配多个元素。因此,我采用了的方式。
2026-10-31 00:15:11
190
原创 [Playwright] [09]测试代码重构:提取公共方法,减少重复代码
在 HPC Dashboard 的 Upload 模块自动化测试中,我编写了五条测试用例。随着测试增加,我发现文件上传、Job 提交等操作反复出现。如果每条用例都重复编写,不仅代码冗长,后续修改也比较麻烦。因此,我开始将重复操作提取为公共方法(Helper Functions)。接下俩的其他模块也是类似逻辑,先把逻辑跑通,然后把一些反复出现的代码提取出来,封装起来,直接调用。
2026-10-31 00:14:43
193
原创 [Playwright][08] Upload 模块自动化:如何设计真实业务测试用例?
本文记录HPC Dashboard Upload模块E2E测试的开发过程。基于业务流程,设计五条测试用例,覆盖表单校验、普通Job提交及Recurring Job关联等核心场景。采用Playwright+TypeScript实现,封装文件上传与提交逻辑,重点验证提交后跨页面业务结果(如任务可见性、运行次数统计)。测试中发现定位精准性、等待机制与数据清理等问题,为后续优化提供方向。强调:自动化测试应验证业务结果,而非仅操作执行成功。
2026-10-30 00:06:47
292
原创 [Playwright][07] E2E 自动化测试项目实战:从框架搭建到 CI/CD
这次实践让我重新走了一遍从编写测试用例,到组织测试代码、管理测试数据,再到搭建 CI/CD 环境的完整过程。项目还不算完善,但我希望通过持续记录,把开发中遇到的问题和解决思路整理下来。先把测试跑起来,再让它变得更可靠、更容易维护。
2026-10-30 00:06:17
298
原创 [Playwright][06]自动等待与断言:如何减少 Flaky Tests?
这次用两个简单的动态页面,分别模拟了按钮延迟出现和保存结果延迟返回。操作之前:元素真的可以操作了吗?操作之后:页面真的达到预期状态了吗?Playwright 的 Auto-waiting 和自动重试断言,正好分别帮助我们处理这两个问题。相比到处添加固定等待,明确地等待元素状态和业务结果,通常更可靠,也更方便排查失败原因。当然,Flaky Test 还可能与测试数据、执行顺序、网络和环境有关。自动等待只能解决其中一部分问题。
2026-10-30 00:05:51
319
原创 [Playwright][05]元素定位实战:Locator、CSS 与 getByRole
优先考虑定位条件是否稳定、唯一,而不是单纯追求某一种 API。有明确语义的按钮和链接,可以优先尝试。自己控制的 Web 项目,可以为复杂组件添加稳定的。CSS 选择器完全可以使用,但尽量避免依赖深层 DOM 结构和元素位置。遇到定位失败时,先区分是找不到元素、匹配多个元素,还是元素暂时不可操作。不要依赖随意增加等待时间来掩盖定位问题。
2026-10-29 16:38:58
567
原创 [Playwright][04]Playwright.config.ts 配置详解:浏览器、超时、重试
浏览器:本地先跑 Chromium,需要时再做跨浏览器测试。超时:区分整个测试的超时和单次断言的等待时间。重试:本地失败及时暴露问题,CI 环境允许有限次数的重试。不需要一开始就写得特别复杂。真正重要的是,遇到问题时知道应该检查哪个配置,而不是靠不断增加超时和重试次数让测试“看起来通过”。
2026-10-29 00:59:43
321
原创 [Playwright][03] Trace Viewer 实战:3 个常见错误的调试方法
最近写了一篇playwright debug,感觉trace很好用。。来看看 Trace Viewer 怎么帮我们定位问题。
2026-10-29 00:14:53
196
原创 [Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
写自动化测试最头疼的是什么?不是写代码,而是测试突然失败了,还不知道怎么debug,一步步加console.log好烦。明明昨天还能跑,今天就红了。终端甩过来一大段报错,翻了半天,结果可能只是定位器写错了,或者断言写得太死。好在 Playwright 自带了不少调试工具。这篇就拿 Bing 搜索做个小实验,让测试失败,看看怎么一步步找到问题。这次故意写错 Bing 搜索测试的断言,分别体验了几种调试方式。想看看浏览器在干什么,用--headed。想一步一步执行代码,用--debug。
2026-10-28 23:23:43
389
原创 [Playwright][01] 从 Puppeteer 到 Playwright:为什么选择 Playwright + TypeScript?
之前做 Web 自动化测试时,我主要使用 JavaScript + Puppeteer,基于已有开源框架进行二次开发,并逐步将手工回归测试转化为自动化测试。最近重新整理自己的自动化测试项目,发现大量自动化测试招聘需要Playwright技术,所以决定使用做一个Demo。为什么没有继续使用熟悉的 Puppeteer?主要原因不是 Puppeteer 不好用,而是对于一个新的 E2E 自动化测试项目,我更希望测试框架本身能够提供完整的测试运行、断言、报告和 CI/CD 集成能力。
2026-10-28 22:25:27
558
原创 [centos7][ansible ]yum install ansible no package avaliable
目录背景原因操作背景centos7 使用命令安装ansible失败,报错 no package avaliable原因Ansible是属于Extra Packages for Enterprise Linux (EPEL)库的一部分,因此要先安装EPEL操作 yum install epel-release yum repolist yum install ansible...
2022-02-22 11:24:27
1041
原创 [vmware][centos]centos网络连接
目录背景解决方案步骤背景学习ansible,使用vmware搭centos环境,网络连接失败原因:公司的网络对ip可能有限制的,桥接模式(Bridged Adapter)不行。因为会分配和宿主机同样的ip,解决方案使用NAT的方式来联网,访问外发Host-only的adapter来实现宿主机通信步骤看guide配置vi /etc/sysconfig/network-scrips/ifcfg-enp0s3配置vi /etc/sysconfig/network-scrip
2022-02-21 21:08:18
623
原创 [Node]Cannot set headers after they are sent to the client
目录背景操作背景npm start 后Cannot set headers after they are sent to the client操作写了两个res.send(),删除一个就好原codeexports.getArticleCates = (req, res) => { const sql = 'select * from ev_article_cate where is_delete=0 order by id asc' db.query(sql, (err,
2022-01-26 17:45:19
1166
原创 [Node]res.send is not a function
目录背景操作背景npm start 报错res.send is not a function操作req 和res的位置有一定的要求,一定按官网来,req前,res后 (req, res) => { res.send('ok')})
2022-01-26 17:32:40
7596
原创 [Node]制作一个node包并且传到npm仓库,并把md文件转化为html
目录背景步骤导入代码片段格式化代码具体代码拆分发布补充知识md转化为html背景开发一个自己的包的步骤,以my-tools为例子步骤新建一个文件,eg:my-tools先去https://www.npmjs.com/查询自己命名自的保名字是否有重复的)npm init -y 初始化文件夹,生产package.json文件,并填写参数name是包的名字main是包的入口文件description报的描述keywords是使用时的关键字license是包遵循的协议创建index.js
2022-01-23 17:51:20
932
原创 [Node]如何查看安装的node包的官方使用指南,以及淘宝镜像原理和使用
目录背景步骤补充说明背景写一个项目,经常会用到很多包,但是如何查询这个安装包的使用,这里以moment为例步骤打开官网https://www.npmjs.com/输入包名,search点开第一个选项4.打开使用指南,resources->DocumentationUsing Moment查看文档补充说明下载包原理我们从npm官网搜索到想要的包,然后通过guide,使用npm i 包,下载对应包,该包从npm服务器拉去拉取淘宝镜像原理/
2022-01-23 14:54:54
1512
原创 [Node][hm]-Nodejs内置API[1]
目录背景笔记1.node 是什么2.fs读取3.fs写入Eg:整理成绩处理路径pathEg:时钟httpEg:web服务器背景补充学习下node知识,课程来自黑马npm、包、模块化、身份认证、CORS 跨域MySQL 数据库、API 接口项目开发nodejs学习路径js-node.js内置API(fs、path、http)+第三方API模块(express、mysql)个人学习笔记,如有侵权,会删除。笔记1.node 是什么js可以在浏览器运行,是因为浏览器里面有引擎(不同的引擎使用不
2022-01-18 22:13:25
1014
原创 [Node]node.js全栈入门[下]-做一个任务管理项目
目录背景笔记需求分析数据库的初始化背景补充学习下node知识,课程来自imooc从node基础到web相关的基础知识,到最后任务管理系统实战。技术栈:react+redux+mysql+express个人学习笔记,如有侵权,会删除。笔记需求分析根据客户端传递过来的不同参数(状态,页码)查询,任务列表新增一个任务的功能(名称/截止日期/内容)实现一个编辑功能:根据客户端 传递的任务对象,进行编辑(名称/截止日期/内容)删除 (ID)修改任务状态(ID/状态–待办/完成)数据库的初
2022-01-18 15:33:56
1274
原创 [github][git]多层文件,忽略node_modules
目录背景具体操作背景有一个github仓库,里面有好多react项目,或者其他项目,项目里面有好多node_modules,目标忽略掉node_modules具体操作在本地文件夹里面,创建一个.gitignore 文件夹,里面填写//使用*通配多个字符,把仓库下所有node_modules忽略掉*node_modules/*第二种情况,已经把node_modules传到github,那怎么整。在第一种方法下,依旧有node_modules 被上传,使用下面这个//发现有不该提交的文件已
2022-01-18 15:29:08
1488
原创 [Node]node.js全栈入门[上]
目录背景笔记node基础web基础任务管理项目背景补充学习下node知识,课程来自imooc。个人学习笔记,如有侵权,会删除。笔记node基础创建一个nodejs程序//读取系统的cpu的信息const os = require('os');//获取当前系统的cpu数量const cpus = os.cpus();console.log(cpus.length);//获取内存的信息//总内存,GBconst total = os.totalmem();console.log(
2022-01-10 14:21:49
739
原创 [npm]reason: connect ETIMEDOUT 240e:93c:1001:1:3::3fc:443
目录背景操作背景npm install nrm 报错操作
2022-01-06 20:37:34
4030
原创 [Node]node.js实现登录注册
背景补充学习下node知识,课程来自imooc。个人学习笔记,如有侵权,会删除。node课程笔记node基础node介绍脱离浏览器运行JS后台API编写Webpack,gulp,Npm等等中间层:服务器中负责IO读写的中间层服务器node 可以优化性能异步io处理数据安全性案例login,signupnode介绍node优势便于前端开发入门性能高利于前端代码整合环境搭建官网下载node -v检验node 1.js清屏幕 cls
2022-01-06 16:01:42
4316
原创 [react][charles]本地mock前端数据,依旧404
目录背景操作背景复习简书项目,使用charles,昨天还是好的,今天突然发现todolist请求一直404操作cmd 查询本机ip(ipconfig )把ip填入之前填写loadhost的地方访问的时候也用ip:port来访问项目好了...
2021-12-29 18:01:46
449
原创 [react][react-router-dom]A <Route> is only ever to be used as the child of <Routes> element
目录背景操作参考链接背景制作简书项目,router报错import React, { Component } from 'react';import Header from './common/header';import { GlobalIcon } from './statics/iconfont/iconfont.js'import store from './store';import { Provider } from 'react-redux';import { Routes,
2021-12-22 09:00:23
295
原创 [React]export ‘injectGlobal‘ (imported as ‘injectGlobal‘) was not found in ‘styled-components‘
目录背景操作背景react做简书项目中遇到这个问题操作把injectGlobal 改为createGlobalStyle在v4中,injectGlobal API被移除,并被createGlobalStyle取代。
2021-12-20 19:47:55
1143
3
原创 [React]Element type is invalid: expected a string (for built-in components) or a class/function
目录背景操作背景react+redux做todolist项目中遇到这个问题操作安装报错提示信息,把app改为function或者class// const App = (// <Provider store={store}>// <TodoList />// </Provider>// )function App() { return <Provider store={store}>
2021-12-20 14:36:28
812
原创 nvm使用 npm,‘npm‘/‘npx‘ is not recognized as an internal or external command
执行npx create-react-app my-app,遇到报错
2021-12-17 10:53:26
1903
原创 [React]nvm切换node版本,看上去成功,实际失败;Access is denied问题;invalid memory address or nil pointer dereference
目录背景操作背景搭建react官网井字棋demo,npx create-react-app my-app 执行失败,得知是node版本问题,于是换版本,显示切换成功,但是实际没有切换过去。操作卸载nvm,node 包括环境变量参数(与nvm和node相关的都删除)重新安装nvm,直接用cmd,首先重新安装13.0.0,然后切换,结果切换失败并且报Access is denied这里安装的nvm就是nvm-setup.exe,官网可以直接下载,然后nextnext就行。nvm install
2021-12-17 10:16:59
1574
原创 【2022】工程师头两年需要掌握的软性技能
目录背景专业基础Team workAgileDegin thinkingEngagementcareer技术基础cloudwastonsecurityQ背景开个新坑,更新下职场头两年developer需要学习的软性技能专业基础Team workThe Truth About Employee EngagementAgileDegin thinkingEngagementcareer技术基础cloudwastonsecurityQ...
2021-12-08 11:09:40
213
原创 Reac入门
目录Reac入门JS复习历史基础语法数据类型和变量Number字符串boolean比较运算符null和undefined数组对象变量和字符串变量模板字符串条件判断和循环if elsefor / while循环函数的定义与调用函数定义调用函数安装ReactCreate React Appreact 特性Hello WorldJSX优点DOMReac入门react私人学习笔记,内容来自网络搜索,js和react官网,仅供学习使用JS复习历史JS历史• 1995年网景公司的Brendan Eich1
2021-04-12 11:14:02
757
原创 将react项目部署到Github pages
目录操作准备环境视频操作首先在github上创建一个仓库,然后clone到本地,在本地目录创建一个react项目,最后把react项目部署到github pages页面。准备环境github上面创建一个仓库克隆到本地git clone xxxxx创建一个react项目,在上面仓库的目录下面,比如仓库名字react_learn,就在react_learn/下创建一个react项目npx create-react-app appcd appnpm install安装
2021-01-13 11:42:21
2516
原创 Windows安装WSL开发react项目
目录简介安装wsl连接git配置react项目用vscode开发wsl项目总结简介最近需要做一个react项目的开发,在window上面安装很多次,最后yarn start失败,于是查到wsl这个神器,安装后就可以愉快的开始react开发了~~~安装wsl简介Windows Subsystem for Linux,可以在window实现linux操作优点安装简单 | 可以用window访问swl文件List item允许window安装swslwindow store 选择 ubunt
2020-12-03 14:07:44
972
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅