Browse Source
* tweak: official site checker before publish * feat: check site files * fix: diff logic * fix: replace * feat: add site jest test * fix: test case * fix: test * feat: static server test * Update check-site.js * feat: en-US index * fix: lintpull/19300/head
信鑫-King
5 years ago
committed by
偏右
3 changed files with 119 additions and 2 deletions
@ -0,0 +1,22 @@ |
|||
const { moduleNameMapper, transformIgnorePatterns } = require('./.jest'); |
|||
|
|||
// jest config for server render environment
|
|||
module.exports = { |
|||
moduleFileExtensions: ['ts', 'tsx', 'js', 'md'], |
|||
moduleNameMapper, |
|||
transform: { |
|||
'\\.tsx?$': './node_modules/@ant-design/tools/lib/jest/codePreprocessor', |
|||
'\\.js$': './node_modules/@ant-design/tools/lib/jest/codePreprocessor', |
|||
'\\.md$': './node_modules/@ant-design/tools/lib/jest/demoPreprocessor', |
|||
'\\.(jpg|png|gif|svg)$': './node_modules/@ant-design/tools/lib/jest/imagePreprocessor', |
|||
}, |
|||
testRegex: 'check-site\\.js$', |
|||
testEnvironment: 'node', |
|||
transformIgnorePatterns, |
|||
snapshotSerializers: ['enzyme-to-json/serializer'], |
|||
globals: { |
|||
'ts-jest': { |
|||
tsConfigFile: './tsconfig.test.json', |
|||
}, |
|||
}, |
|||
}; |
@ -0,0 +1,92 @@ |
|||
/* eslint-disable no-await-in-loop */ |
|||
/* eslint-disable no-restricted-syntax */ |
|||
const fetch = require('node-fetch'); |
|||
const { join } = require('path'); |
|||
const cheerio = require('cheerio'); |
|||
const glob = require('glob'); |
|||
const uniq = require('lodash/uniq'); |
|||
const { createServer } = require('http-server'); |
|||
const zhCN = require('../site/theme/zh-CN'); |
|||
const enUS = require('../site/theme/en-US'); |
|||
|
|||
const components = uniq( |
|||
glob |
|||
.sync('components/*/*.md', { |
|||
ignore: '**/{__tests__,_util,version,index.tsx}', |
|||
cwd: join(process.cwd()), |
|||
dot: false, |
|||
}) |
|||
.map(path => path.replace(/(\/index)?((\.zh-CN)|(\.en-US))?\.md$/i, '')), |
|||
); |
|||
|
|||
describe('site test', () => { |
|||
let server; |
|||
const host = 3000; |
|||
const render = async path => { |
|||
const resp = await fetch(`http://localhost:${host}${path}`).then(async res => { |
|||
const html = await res.text(); |
|||
const $ = cheerio.load(html, { decodeEntities: false, recognizeSelfClosing: true }); |
|||
return { |
|||
html, |
|||
status: res.status, |
|||
$, |
|||
}; |
|||
}); |
|||
return resp; |
|||
}; |
|||
const handleComponentName = name => { |
|||
const componentMap = { |
|||
descriptions: 'description list', |
|||
}; |
|||
// eslint-disable-next-line no-unused-vars
|
|||
const [_, componentName] = name.split('/'); |
|||
const compName = componentName.toLowerCase().replace('-', ''); |
|||
return componentMap[compName] || compName; |
|||
}; |
|||
|
|||
const expectComponent = async component => { |
|||
const { status, $ } = await render(`/${component}/`); |
|||
expect(status).toBe(200); |
|||
expect( |
|||
$('.markdown > h1') |
|||
.text() |
|||
.toLowerCase(), |
|||
).toMatch(handleComponentName(component)); |
|||
}; |
|||
|
|||
beforeAll(() => { |
|||
server = createServer({ |
|||
root: join(process.cwd(), '_site'), |
|||
}); |
|||
server.listen(host); |
|||
console.log('site static server run: http://localhost:3000'); |
|||
}); |
|||
|
|||
afterAll(() => { |
|||
if (server) { |
|||
server.close(); |
|||
} |
|||
}); |
|||
|
|||
it('Basic Pages en', async () => { |
|||
const { status, $ } = await render('/'); |
|||
expect($('title').text()).toEqual(`Ant Design - ${enUS.messages['app.home.slogan']}`); |
|||
expect(status).toBe(200); |
|||
}); |
|||
|
|||
it('Basic Pages zh', async () => { |
|||
const { status, $ } = await render('/index-cn'); |
|||
expect($('title').text()).toEqual(`Ant Design - ${zhCN.messages['app.home.slogan']}`); |
|||
expect(status).toBe(200); |
|||
}); |
|||
|
|||
for (const component of components) { |
|||
it(`Component ${component} zh Page`, async () => { |
|||
await expectComponent(component); |
|||
}); |
|||
|
|||
it(`Component ${component} en Page`, async () => { |
|||
await expectComponent(component); |
|||
}); |
|||
} |
|||
}); |
Loading…
Reference in new issue