diff --git a/frontend/components/dashboard/scan-terminal/ProductAccessRequired.tsx b/frontend/components/dashboard/scan-terminal/ProductAccessRequired.tsx
index d03e3f76..c112b92e 100644
--- a/frontend/components/dashboard/scan-terminal/ProductAccessRequired.tsx
+++ b/frontend/components/dashboard/scan-terminal/ProductAccessRequired.tsx
@@ -137,25 +137,25 @@ function UnauthenticatedGate({
? "The weather terminal is for verified subscribers only."
: "天气决策台仅对已验证的付费用户开放。"}
-
{isEn ? "Log in" : "登录"}
-
-
+
{isEn ? "Create an account" : "注册账号"}
-
-
+
{isEn ? "← Learn about PolyWeather" : "← 了解 PolyWeather"}
-
+
diff --git a/frontend/components/dashboard/scan-terminal/__tests__/productAccessRequired.test.ts b/frontend/components/dashboard/scan-terminal/__tests__/productAccessRequired.test.ts
new file mode 100644
index 00000000..591ecddf
--- /dev/null
+++ b/frontend/components/dashboard/scan-terminal/__tests__/productAccessRequired.test.ts
@@ -0,0 +1,40 @@
+import fs from "node:fs";
+import path from "node:path";
+
+function assert(condition: unknown, message: string) {
+ if (!condition) throw new Error(message);
+}
+
+export function runTests() {
+ const source = fs.readFileSync(
+ path.join(
+ process.cwd(),
+ "components",
+ "dashboard",
+ "scan-terminal",
+ "ProductAccessRequired.tsx",
+ ),
+ "utf8",
+ );
+ const unauthenticatedGate = source.slice(
+ source.indexOf("function UnauthenticatedGate"),
+ source.indexOf("export function ProductAccessRequired"),
+ );
+
+ const accessCard = unauthenticatedGate.slice(
+ unauthenticatedGate.indexOf('