样式修改

This commit is contained in:
谢宇宁
2026-10-16 14:10:10 +07:00
parent d2ddb1c321
commit 4afd5f9143
42 changed files with 89 additions and 1765 deletions
+4 -81
View File
@@ -86,7 +86,7 @@ const encrypted = decryptImageBytes(
const entry = join(temp, "fixture.tsx");
await writeFile(
entry,
`import {useState} from 'react';import {createRoot} from 'react-dom/client';import {SiteProvider} from '${cwd}/src/components/providers/SiteProvider';import {TrackerProvider} from '${cwd}/src/components/analytics/TrackerProvider';import {DramaWatchPage} from '${cwd}/src/features/playback/DramaWatchPage';import {SeriesWatchPage} from '${cwd}/src/features/playback/SeriesWatchPage';import {EncryptedImage} from '${cwd}/src/components/media/EncryptedImage';function Fixture(){const [current,setCurrent]=useState(window.fixtureData);window.changePlaybackFixture=setCurrent;return <TrackerProvider boot={{appId:'JHA-4001',encryptedConfig:'mock',uid:'mock_1001',pageKey:'play',pageName:'短剧播放页'}}><SiteProvider data={current} dialogs={false}>{current.series?<SeriesWatchPage key={current.fixtureKey} data={current}/>:<DramaWatchPage key={current.fixtureKey} data={current}/>}<EncryptedImage id="encrypted-image-test" src="/encrypted.png" eager style={{width:32,height:32}} onResolved={()=>window.imageResolved=(window.imageResolved||0)+1} onResolveError={()=>window.imageErrors=(window.imageErrors||0)+1}/><EncryptedImage id="failed-image-test" src="/missing-image" eager style={{width:32,height:32}} onResolved={()=>window.failedImageResolved=true} onResolveError={()=>window.failedImageError=true}/></SiteProvider></TrackerProvider>};createRoot(document.getElementById('root')).render(<Fixture/>);`,
`import {useState} from 'react';import {createRoot} from 'react-dom/client';import {SiteProvider} from '${cwd}/src/components/providers/SiteProvider';import {DramaWatchPage} from '${cwd}/src/features/playback/DramaWatchPage';import {SeriesWatchPage} from '${cwd}/src/features/playback/SeriesWatchPage';import {EncryptedImage} from '${cwd}/src/components/media/EncryptedImage';function Fixture(){const [current,setCurrent]=useState(window.fixtureData);window.changePlaybackFixture=setCurrent;return <SiteProvider data={current} dialogs={false}>{current.series?<SeriesWatchPage key={current.fixtureKey} data={current}/>:<DramaWatchPage key={current.fixtureKey} data={current}/>}<EncryptedImage id="encrypted-image-test" src="/encrypted.png" eager style={{width:32,height:32}} onResolved={()=>window.imageResolved=(window.imageResolved||0)+1} onResolveError={()=>window.imageErrors=(window.imageErrors||0)+1}/><EncryptedImage id="failed-image-test" src="/missing-image" eager style={{width:32,height:32}} onResolved={()=>window.failedImageResolved=true} onResolveError={()=>window.failedImageError=true}/></SiteProvider>};createRoot(document.getElementById('root')).render(<Fixture/>);`,
);
const navStub = join(temp, "navigation.ts");
await writeFile(
@@ -159,18 +159,6 @@ const baseData = () => ({
{ id: 102, currentEpisode: 2, payType: 1, needUnlock: true },
],
},
trackerDrama: {
DramaID: 10,
DramaTitle: "播放测试",
VideoID: 101,
Episode: 1,
TotalEpisode: 2,
DramaDuration: 12,
DramaTypeID: "2",
DramaTypeName: "都市",
DramaTagKey: "3",
DramaTagName: "剧情",
},
hotList: [],
guessLike: [
{ id: 30, slug: "guess", playName: "猜你喜欢测试", cover: "/static/brand/placeholder.svg", totalEpisode: 3, updateStatus: 2 },
@@ -194,13 +182,6 @@ const server = createServer(async (req, res) => {
res.end(playbackStyles.css);
return;
}
if (url.pathname === "/static/common/web-sdk-v1.2.0.js") {
res.setHeader("content-type", "application/javascript");
res.end(
'window.sdkEvents=[];window.WebSDK={init:options=>{window.sdkInit=options},track:new Proxy({},{get:(_,method)=>payload=>{window.sdkEvents.push({method,payload});return Promise.resolve({ok:true})}}),getCommonFields:()=>Promise.resolve({sid:"mock-session",device_id:"mock-device",device:"PC",device_fingerprint:"mock-fp",fp_version:"1"}),flush:()=>Promise.resolve(),setUid:()=>{}};',
);
return;
}
if (url.pathname.startsWith("/api/")) {
res.setHeader("content-type", "application/json");
let data: unknown = {};
@@ -378,35 +359,6 @@ try {
return video.play();
});
await page.waitForFunction(() => document.querySelector("video")!.ended);
const events = await page.evaluate(
() =>
(
window as unknown as {
sdkEvents: { method: string; payload: Record<string, unknown> }[];
}
).sdkEvents,
);
for (const behavior of [
"ep_view",
"ep_play",
"ep_pause",
"ep_forward",
"ep_complete",
])
assert(
events.some(
(event) =>
event.method === "dramaEvent" &&
event.payload.play_behavior_key === behavior,
),
behavior,
);
assert(
events.some(
(event) =>
event.method === "dramaEvent" && event.payload.play_speed === 150,
),
);
assert.equal(
await page
.locator("#failed-image-test")
@@ -440,30 +392,11 @@ try {
),
true,
);
const beforePreview = events.filter(
(event) =>
event.method === "dramaEvent" &&
event.payload.play_behavior_key === "ep_play",
).length;
await page.getByRole("button", { name: "预告片", exact: true }).click();
await page.waitForFunction(() => {
const video = document.querySelector("video");
return !!video && !video.paused && video.currentTime > 0.1;
});
await page.waitForTimeout(300);
const afterPreview = await page.evaluate(
() =>
(
window as unknown as {
sdkEvents: { method: string; payload: Record<string, unknown> }[];
}
).sdkEvents.filter(
(event) =>
event.method === "dramaEvent" &&
event.payload.play_behavior_key === "ep_play",
).length,
);
assert.equal(afterPreview, beforePreview);
assert.equal(
await page.locator(".hk-playback-player").getAttribute("data-play-mode"),
"preview",
@@ -493,18 +426,8 @@ try {
const watchReq = requests.find(
(req) => req.url === "/api/playlet/chapter/watch/report",
);
assert.equal(
watchReq?.headers["x-sdk-common"],
Buffer.from(
JSON.stringify({
sid: "mock-session",
device_id: "mock-device",
device: "PC",
device_fingerprint: "mock-fp",
fp_version: "1",
}),
).toString("base64"),
);
assert(watchReq, "watch report request");
assert.equal(watchReq.headers["x-sdk-common"], undefined);
await page.evaluate(() => window.scrollTo(0, 0));
await page.screenshot({ path: join(output, device + "-player.png") });
const paid = {
@@ -667,7 +590,7 @@ try {
fullscreen: true,
errorRetry: true,
realMp4: true,
recommendationsAndTracking: true,
recommendations: true,
encryptedImageAndFallback: true,
lockedAppDownloadOnly: true,
});