| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import fs from 'node:fs';
- const platformFiles = [
- 'server/src/automation/platforms/xiaohongshu.ts',
- 'server/src/automation/platforms/weixin.ts',
- 'server/src/automation/platforms/baijiahao.ts',
- 'server/src/automation/platforms/douyin.ts',
- 'server/src/automation/platforms/bilibili.ts',
- 'server/src/automation/platforms/kuaishou.ts',
- ];
- const lifecycleOffenders = [];
- for (const file of platformFiles) {
- const lines = fs.readFileSync(file, 'utf8').split(/\r?\n/);
- for (let index = 0; index < lines.length; index += 1) {
- if (!lines[index].includes('await this.closeBrowser()')) continue;
- const followingLines = lines.slice(index + 1, index + 5).join('\n');
- if (followingLines.includes('this.page.url()')) {
- lifecycleOffenders.push(`${file}:${index + 1}`);
- }
- }
- }
- if (lifecycleOffenders.length > 0) {
- throw new Error(
- `publish success reads this.page.url() after closeBrowser():\n${lifecycleOffenders.join('\n')}`,
- );
- }
- const publishService = fs.readFileSync('server/src/services/PublishService.ts', 'utf8');
- if (publishService.includes('private adapters: Map<PlatformType, BasePlatformAdapter> = new Map();')) {
- throw new Error('PublishService stores shared adapter instances; publish adapters must be created per run.');
- }
- const baijiahaoAdapter = fs.readFileSync('server/src/automation/platforms/baijiahao.ts', 'utf8');
- if (/const publishBtn = this\.page\.locator[\s\S]{0,300}await publishBtn\.click\(\);/.test(baijiahaoAdapter)) {
- throw new Error('Baijiahao publish button uses a plain click without overlay fallback.');
- }
- console.log('publish flow checks passed');
|