欢迎光临
我们一直在努力

第一个冒烟测试:“Hello widget”和 openExternal

1. 什么是 ChatGPT App 的冒烟测试

在常见的 Web 开发语境中,冒烟测试就是最基本的检查——“系统还活着吗?” 页面能打开,按钮不会崩,没出现致命错误。

在 ChatGPT Apps 的世界里,冒烟测试会更有趣一些,因为链路上同时涉及多个环节:

  • 你的小部件代码(React/Next.js)。
  • Next.js 开发服务器。
  • 隧道(ngrok/Cloudflare)。
  • ChatGPT,它会创建 iframe 并把你的小部件加载到聊天里。
  • 对我们来说,一个理想的冒烟测试意味着:

    • 小部件能在 ChatGPT 内部无错误地渲染;
    • 基础的交互正常(例如点击按钮后能打开外部链接);
    • 浏览器控制台和开发服务器日志里没有一片“红色雪崩”。

    重要提示:在这个阶段,我们还不检查 MCP 工具,不做压力测试,也不计算 Token 成本。我们的目标朴素而务实:证明“代码 → Next.js → 隧道 → ChatGPT → 用户”这条链路能够闭环。

    可以把它想象成这样一张表:

    检查什么
    如何判断一切正常
    小部件渲染 在 ChatGPT 中能看到我们的 UI,而不是“损坏的 iframe”
    ChatGPT ↔ 我们的服务器连通性 没有“无法加载应用”的错误
    沙箱中的 JS 运行 处理器 onClick 确实会执行
    能否打开外部链接 按钮会用指定的 URL 打开新标签/窗口

    2. 我们的教学 App:简单的“Hello GiftGenius”

    在本课程中,我们会逐步构建 GiftGenius——一个礼物选品助手。在当前这一步,它还不会选礼物,但至少可以礼貌地打个招呼,并展示一个“了解更多”的链接。

    我们需要一个最小但真实的小部件:没有复杂逻辑,但包含可运行的 React 代码。

    一个最简单的小部件组件可以长这样(名称和样式你可以自行调整,这里先使用课程计划中的基础版):

    // app/widget/page.tsx
    \’use client\’;

    export default function GiftGeniusWidget() {
    return (
    <main style={

    { padding: 16, fontFamily: \’system-ui, sans-serif\’ }}>
    <h1 style={

    { fontSize: 24, marginBottom: 8 }}>
    Hello from GiftGenius
    </h1>
    <p style={

    { marginBottom: 16 }}>
    这是你的第一个 ChatGPT App。接下来我们会教它挑选礼物。
    </p>
    </main>
    );
    }

    几个重要的注意点。

    首先,文件开头的指令 \’use client\’; 会把组件标记为客户端组件。没有它,Next.js 会把文件当作服务端组件处理,你将无法使用 window、事件处理器 onClick,以及任何浏览器 API。

    其次,这就是一个普通的 React 组件。你看不到任何“Apps SDK 的魔法”——这很坦诚。它之所以最终出现在 ChatGPT 里,所有“魔法”都藏在 MCP 服务器的配置以及那个返回小部件 URL 的工具里。我们稍后再处理这些内容,现在只关心 UI。

    3. 把小部件嵌入模板并运行

    在用于 Apps SDK 的官方 Next.js 模板里,小部件页面通常已经存在;你可以直接修改,或者按需在相应路由下新建页面(例如 /widget)。

    假设你已经有了 app/widget/page.tsx,并把其内容替换为上面

    赞(0)
    未经允许不得转载:171主机测评 » 第一个冒烟测试:“Hello widget”和 openExternal
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址