'use strict';
/**
* 「卡密管理 → 添加卡密 / 导出卡密」依赖显隐契约。
*
* 这两个表单的依赖显隐由两层协作完成,两层必须对「键 → 默认值 → 操作符」保持完全一致:
* 1) 服务端预判:deps_visible() + is_known_dep_key() + default_form_value(),渲染期就把不满足
* 依赖的
标成 display:none,避免首帧把导入提示全部铺开;
* 2) 前端求值:行内脚本 evalDeps(),在 DOMContentLoaded 与 change 时求值。
*
* 历史故障(本测试要锁死的行为):
* - 判定键未登记 → 服务端把该条件当作「满足」,与 JS 结果错配(例如自定义卡密的两条导入提示同时铺开);
* - 字段名拼进 CSS 选择器 → 含方括号的 vip_exchange[time] 让选择器抛异常并被 catch 吞掉,
* 依赖行永久停在初始状态。
*
* 这里不重写求值逻辑:直接抽取并执行源码里的行内脚本,用真实 dep 数组驱动它。
*/
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const test = require('node:test');
const vm = require('node:vm');
const root = path.resolve(__dirname, '..', '..');
// PayChargeCards 已按关注点拆成 flat sibling traits。契约按方法名切片,依赖「类体 + trait 体」
// 在同一文本里保持原有相邻顺序,因此这里按固定顺序把壳类与三个 trait 文件拼接后再切片:
// 壳类(render_charge_cards_page / 动作 / 数据辅助)
// → List(render_list / list_query_args)
// → Assets(print_assets 的