1
0
mirror of https://github.com/kremalicious/portfolio.git synced 2024-12-23 01:29:41 +01:00

Merge pull request #91 from kremalicious/fix/lighthouse

lighthouse test CI fix
This commit is contained in:
Matthias Kretschmann 2019-01-20 14:47:15 +01:00 committed by GitHub
commit 97cce46a9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 69 deletions

View File

@ -38,7 +38,7 @@ The whole [portfolio](https://matthiaskretschmann.com) is a React-based Single P
### ⛵️ Lighthouse score ### ⛵️ Lighthouse score
[![Lighthouse scores](https://lighthouse.now.sh/?perf=100&pwa=100&a11y=100&bp=100&seo=100)](https://travis-ci.com/kremalicious/portfolio) ![Lighthouse scores](https://lighthouse.now.sh/?perf=100&pwa=100&a11y=100&bp=100&seo=100)
### 💍 One data file to rule all pages ### 💍 One data file to rule all pages
@ -113,7 +113,7 @@ All SVG assets under `src/images/` will be converted to React components with th
```js ```js
import { ReactComponent as Logo } from './components/svg/Logo' import { ReactComponent as Logo } from './components/svg/Logo'
<Logo /> return <Logo />
``` ```
### 🍬 Typekit component ### 🍬 Typekit component
@ -167,7 +167,7 @@ Then continue modifying the new entry in [`data/projects.yml`](data/projects.yml
Finally, add as many images as needed with the file name format and put into `src/images/`: Finally, add as many images as needed with the file name format and put into `src/images/`:
``` ```text
portfolio-SLUG-01.png portfolio-SLUG-01.png
portfolio-SLUG-02.png portfolio-SLUG-02.png
portfolio-SLUG-03.png portfolio-SLUG-03.png

View File

@ -17,7 +17,7 @@
"dev": "./node_modules/gatsby/dist/bin/gatsby.js develop --host 0.0.0.0", "dev": "./node_modules/gatsby/dist/bin/gatsby.js develop --host 0.0.0.0",
"format": "prettier --write 'src/**/*.{js,jsx}'", "format": "prettier --write 'src/**/*.{js,jsx}'",
"format:css": "prettier-stylelint --write --quiet 'src/**/*.{css,scss}'", "format:css": "prettier-stylelint --write --quiet 'src/**/*.{css,scss}'",
"test": "npm run lint && ./node_modules/.bin/ava **/*.test.js --verbose", "test": "npm run lint",
"deploy": "./scripts/deploy.sh", "deploy": "./scripts/deploy.sh",
"new": "babel-node ./scripts/new.js" "new": "babel-node ./scripts/new.js"
}, },
@ -56,25 +56,21 @@
"devDependencies": { "devDependencies": {
"@babel/core": "^7.2.2", "@babel/core": "^7.2.2",
"@babel/node": "^7.2.2", "@babel/node": "^7.2.2",
"@babel/polyfill": "^7.2.5",
"@babel/preset-env": "^7.2.3", "@babel/preset-env": "^7.2.3",
"@svgr/webpack": "^4.1.0", "@svgr/webpack": "^4.1.0",
"ava": "^1.1.0",
"babel-eslint": "^10.0.1", "babel-eslint": "^10.0.1",
"chrome-launcher": "^0.10.5", "eslint": "^5.12.1",
"eslint": "^5.12.0", "eslint-config-prettier": "^3.6.0",
"eslint-config-prettier": "^3.4.0",
"eslint-loader": "^2.1.1", "eslint-loader": "^2.1.1",
"eslint-plugin-graphql": "^3.0.1", "eslint-plugin-graphql": "^3.0.1",
"eslint-plugin-prettier": "^3.0.1", "eslint-plugin-prettier": "^3.0.1",
"eslint-plugin-react": "^7.12.3", "eslint-plugin-react": "^7.12.4",
"lighthouse": "^4.0.0",
"ora": "^3.0.0", "ora": "^3.0.0",
"prepend": "^1.0.2", "prepend": "^1.0.2",
"prettier": "^1.15.3", "prettier": "^1.16.0",
"prettier-stylelint": "^0.4.2", "prettier-stylelint": "^0.4.2",
"slugify": "^1.3.4", "slugify": "^1.3.4",
"stylelint": "^9.10.0", "stylelint": "^9.10.1",
"stylelint-config-css-modules": "^1.3.0", "stylelint-config-css-modules": "^1.3.0",
"stylelint-config-standard": "^18.2.0", "stylelint-config-standard": "^18.2.0",
"why-did-you-update": "^1.0.6" "why-did-you-update": "^1.0.6"

View File

@ -1,56 +0,0 @@
import '@babel/polyfill'
import * as chromeLauncher from 'chrome-launcher'
import test from 'ava'
import lighthouse from 'lighthouse'
import { siteMetadata } from '../gatsby-config'
const launchChromeAndRunLighthouse = (
url,
opts = { chromeFlags: ['--headless'] },
config = null
) =>
chromeLauncher
.launch({ chromeFlags: opts.chromeFlags })
.then(async chrome => {
opts.port = chrome.port
const results = await lighthouse(url, opts, config)
await chrome.kill()
return results.lhr
})
let scores
test.before(async () => {
console.log(`Auditing ${siteMetadata.siteUrl}.\n`) // eslint-disable-line no-console
scores = await launchChromeAndRunLighthouse(siteMetadata.siteUrl).then(
({ categories }) => categories
)
})
const logScore = score => `Is ${score * 100}.`
const testOutput = (t, metric) => {
const { score } = scores[metric]
t.log(logScore(score))
return score >= 0.9 ? t.pass() : t.fail()
}
test('Performance Score above 90', t => {
testOutput(t, 'performance')
})
test('PWA Score above 90', t => {
testOutput(t, 'pwa')
})
test('Accessibility Score above 90', t => {
testOutput(t, 'accessibility')
})
test('Best Practices Score above 90', t => {
testOutput(t, 'best-practices')
})
test('SEO Score above 90', t => {
testOutput(t, 'seo')
})

View File

@ -50,6 +50,11 @@ const LinkIcon = ({ title, type, ...props }) => {
} }
} }
LinkIcon.propTypes = {
title: PropTypes.string,
type: PropTypes.string
}
export default class ProjectLinks extends PureComponent { export default class ProjectLinks extends PureComponent {
static propTypes = { static propTypes = {
links: PropTypes.array links: PropTypes.array