一文带你了解 PageSpy,开启前端调试新姿势

查看 280|回复 24
作者:blucas01   
前言
推荐一款多端的开源调试工具 PageSpy ,官方地址:https://pagespy.org 。
这款工具可以拿来做什么?如何使用?
接下来的内容会一一说明,你也可以前往官网的回放实验室体验:https://pagespy.org/#/replay-lab 。
介绍
日常开发中,项目出现问题基本都会通过 本地浏览器控制台 排查。可有些时候因为无法使用控制台,而导致排查故障需要多花费很多时间和人力,比如:

  • 真机调试 H5:以往有产品提供了可以在 H5 上查看信息的面板,但真机屏幕太小操作不便、显示不友好,以及数据会被截断;

  • 远程办公、异地协同:传统沟通方式如邮件、电话、视频等,沟通问题的周期长、效率不高、故障信息不全面,容易误解误判;

  • 用户设备白屏:除了需要提前获知出现问题的用户信息,定位问题的方式包括查看数据监控、日志分析,甚至还要跑到客户现场等,这些方式依赖排障人员要理解业务场景、技术实现;

  • 全局的 "问题反馈" 组件
    点击查看示例图:问题反馈表单组件。
    大多注重用户体验的网站,会在产品端为用户提供反馈问题的表单组件。从用户的角度这确实会提升好感,但用户提交的内容对于排查问题的帮助可能并不大,根本原因是:用户提交的基本上是文字概述和截图,或许还包含用户信息,但开发者更希望看到的是:
  • 用户是如何操作的;
  • 伴随着操作,程序的运行时行为数据。例如:打印的日志、发出的网络请求以及响应数据等;


    上述场景中列举的问题的共同点是:开发者无法像使用本地控制台一样查看程序运行信息。

    你也被这些问题困扰了吗?那 PageSpy 可以给你一些帮助。
    能力
    为了方便理解,我们通过实例对 PageSpy 的使用场景和能力进行说明。
    PageSpy 在线实时调试
    产品联调期间,测试人员上报问题后,开发者通过 「 PageSpy 在线实时调试」 查看程序的运行数据,其中包括实时的 Console 、Network 、Page 、Storage 以及 System 信息,还可以发送代码到真机上执行;


    PageSpy 日志回放调试
    假设你开发的工厂系统已经上线、交付使用,某日系统使用人员反馈某个流程不符合预期,但是由于办公地点不同你们只能线上交流。
    系统接入 PageSpy 之前,定位问题可能需要对方提供:
  • 问题的现象说明;
  • 在不同流程状态下的截图;
  • 控制台面板的信息(这是有很高门槛的): 如 Console 面板的日志、Network 面板的数据;
  • 等等……

    系统接入 PageSpy 之后,收到类似的反馈只需告诉对方 上传日志 即可。(不用担心!上传 / 下载离线日志的功能 PageSpy 都已经提供。)

    对方上传完成后就可以前往回放调试,开发者除了可以看到运行时数据外,还可以看到用户的操作轨迹。

    深入
    PageSpy 组成
    PageSpy 主要由三个模块部分组成:
  • 在项目中引入的 SDK ,源代码在 HuolalaTech/page-spy 维护;
  • 开发者查看数据的调试端,源代码在 HuolalaTech/page-spy-web 维护;
  • 在 SDK 和调试端之间转发消息的服务端,源代码在 HuolalaTech/page-spy-api 仓库维护;


    使用
    首先是考虑用户隐私和数据安全、其次为了方便大家使用,PageSpy 打包了上面的三个部分,提供一键启动、开箱即用的多种部署方案,你可以根据自己的情况选择部署方案。

  • 使用 Docker 部署
    docker run -d --restart=always -v ./log:/app/log -v ./data:/app/data -p 6752:6752 --name="pageSpy" ghcr.io/huolalatech/page-spy-web:latest

  • 使用 Node 部署
    yarn global add @huolala-tech/page-spy-api@latest && page-spy-api
    # 或者
    npm install -g @huolala-tech/page-spy-api@latest && page-spy-api

    启动完成后,打开浏览器访问 http://localhost:6752 体验,本地测试完成后即可部署到服务器上。
    最后
    PageSpy 在 Web / 小程序 / ReactNative / OpenHarmony 平台上都已经有稳定的 SDK ,希望 PageSpy 能够帮助到大家!
  • sentinelK   
    试用了一下,挺有意思。
    全力滚动的情况下(最大化的造成画面动作) 10 秒钟 400KB ,也不是很大。
    同时记录屏幕效果、鼠标轨迹、事件、控制台、网络、存储。
    很有意思的一种行为记录尝试。
    但有几个疑问(抱歉没时间通读 readme ):
    1 、我看官方的反馈组件,是没有暂停、停止等录制控制的。那么最长支持录制多长时间?(换句话说录制的内容是暂存在哪里的?如果突破了上限怎么办?是滚动录制,还是?)
    2 、在 SDK 中是否支持自定义的反馈组件,或者通过调用 SDK 方法等形式拿到.json ?(比如我想实现静默自动 10 秒上传)
    3 、基于成本等原因,我想只记录一部分信息或者调整信息质量(比如录屏的画质、帧率,甚至不需要录屏),目前是否支持。
    sentinelK   
    btw:原来开源背景是货拉拉……怪不得如此成熟。
    superliy   
    不错
    DreamingCTW   
    官网进不去?我自己的网络问题吗?
    cloverstd   
    @DreamingCTW #4 托管在 GitHub Pages
    blucas01
    OP
      
    @sentinelK
    - "10 秒钟 400 KB",是因为页面加载过程中请求了一些 shiki 的代码高亮文件,响应数据比较大(记录在网络请求里);
    - "最长支持录制多长时间",没有限制;
    - "录制的内容是暂存在哪里",默认在内存中放 10M 数据,超过了 10M 写到临时文件( object url );录制的内容在每次操作上传 / 下载后,会清空数据并从当前继续录制(第一次导出的文件 400 kb ,第二次点击导出可能就 50 kb );
    - "是否支持自定义",完全支持,操作日志文件提供了 API ;
    - "只记录一部分信息",支持;
    - "调整信息质量",用户操作轨迹是通过记录 DOM 、回放 DOM 来实现的,所以不用担心
    zzNaLOGIC   
    年中的时候在公司推过一波了,确实好用。但是的但是,还是有一些注意点的
    -对于页面内容的录制,如果是内嵌 iframe 加载的操作页面,会存在 iframe 内部内容无法记录的问题。需要折腾修改一下,好在不麻烦
    -对于请求很频繁的页面,长时间监控和记录的情况下,会出现较为严重的性能问题(尤其是低性能电脑上,客户电脑环境不可控),现在已经很多人反馈有浏览器卡顿、延迟的问题了,十分建议不要把单次录制时间拉太长
    -应该很多人都会像我一样,第一反应就是二开一下,加个监控指定接口或者报错就自动上传日志的功能吧。可以做,但强烈建议加上频率阈值限制,否则也会导致第二点的性能问题。
    express   
    记得好久之前是不是也有个类似的工具叫 find bug 还是 fire bug ,搜了一圈没搜到...
    youyouzi   
    有宣发的 PPT 吗?刚好可以做个内部分享 。嘿嘿嘿
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部