Giter VIP home page Giter VIP logo

perfsee / perfsee Goto Github PK

View Code? Open in Web Editor NEW
654.0 4.0 42.0 52.47 MB

a set of tools for measuring and debugging performance of frontend applications

Home Page: https://perfsee.com

License: Apache License 2.0

JavaScript 4.69% Shell 0.01% TypeScript 93.40% CSS 0.02% HTML 0.25% Rust 1.53% Dockerfile 0.03% MDX 0.08%
frontend flamegraph lighthouse performance performance-analysis react vue webpack webpack-bundle-analyzer

perfsee's Introduction

Perfsee

Test Commit codecov

README | 中文 README

Perfsee provides a set of tool for measuring and debugging performance of frontend applications, including bundle analysis, lighthouse auditing, flamegraph visualization, and more.

Contribution

Please check Contributing for more details.

Code of Conduct

Please check Code of Conduct for more details.

Security

If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.

Please do not create a public GitHub issue.

License

This project is licensed under the Apache-2.0 License.

Credits

Our work is heavily inspired by several good open source projects, including:

perfsee's People

Contributors

brooooooklyn avatar congjiujiu avatar crazyurus avatar dependabot[bot] avatar domonji avatar eyhn avatar forehalo avatar kingwl avatar lizimeow avatar moonrailgun avatar promer94 avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

perfsee's Issues

rewrite sdk test cases

The sdk tests should not really know entities, we can rewrite this test to query using the graphql instead of querying the database directly.

Originally posted by @EYHN in #47 (comment)

Webhook design

Webhook

With webhook you can receive event notifications from perfsee on your own server, which is very useful when integrating other services with perfsee.

Receiving payloads

When an event occurs, perfsee will send a POST request to the configured url and includes the data involved in the payload, more details on the different types of events can be found here.

The following code demonstrates how to build a simple server with express to receive webhook events.

const express = require('express')
const app = express()

app.post('/callback', express.json(), function (req, res) {
  switch (req.body.eventType) {
    case 'bundle-finished':
    //... your code here
  }
  res.status(204).send()
})

app.listen(3000)

When your server receives a webhook request, it should return a success status code (>= 200 and < 300) as soon as possible. If no response is received for 30 seconds, perfsee will retry the request.

Validating payloads

To ensure that the webhook request comes from perfsee and prevent others faking the request, you also need to validate the payload.

First you need to set a secret in the webhook settings, after that every webhook requests sent by perfsee will contain an X-Perfsee-Signature-256 header. This is an HMAC hex digest for request body, with sha256= prefix, typical forms are sha256=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

When your server receives a request, you can to use secret and the request body to generate a digest and compare it with the digest provided in the header to complete the validation.

The following demonstrates how to validate with express.

const express = require('express')
const crypto = require('crypto')
const app = express()

app.post('/callback', express.text({ type: '*/*' }), function (req, res) {
  const digest = crypto
    .createHmac('sha256', process.env.SECRET)
    .update(req.body)
    .digest('hex')
  if (req.header('X-Perfsee-Signature-256') === 'sha256=' + digest) {
    const data = JSON.parse(req.body)
    switch (data.eventType) {
      case 'bundle-finished':
      //... your code here
    }
    res.status(204).send()
  } else {
    res.status(400).send()
  }
})

app.listen(3000)

POST Example

Request:

Accept: */*
content-type: application/json
User-Agent: Perfsee-Hookshot/1
X-Perfsee-Delivery: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
X-Perfsee-Event: bundle-finished
X-Perfsee-Hook-ID: 1
X-Perfsee-Hook-Project: perfsee
X-Perfsee-Signature-256: sha256=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

{
  "eventType": "bundle:finished",
  "payload": {
    "data": {
      "project": {
        "id": "anything",
        "host": "Github",
        "namespace": "perfsee",
        "name": "perfsee",
        "isPublic": false,
        "artifact": {
          "id": 65,
          "branch": "feat/webhook",
          "name": "main",
          "hash": "50fae89df58f7e61431268470df5edebad4ba902",
          "status": "Passed",
          "duration": 5433,
          "failedReason": null,
          "buildKey": "builds/1/ad38f6ba-80a0-4d67-869b-8edbbfde0d81.tar",
          "reportKey": "artifacts/1/bundle-results/89540a83-d862-4652-bd8b-3fe338c3eb4e.json",
          "contentKey": "artifacts/1/bundle-content/4a5cbd9a-e04a-4b7f-a76d-0572cae28cab.json",
          "score": 57,
          "createdAt": "2022-12-18T23:12:04.076Z"
        }
      }
    },
    "variables": {
      "projectId": "anything",
      "artifactId": 65
    }
  }
}

Events

Currently webhook has 4 types of events available.

bundle-finished

Payload Property Value Type
project Project
artifact Artifact

snapshot-completed

Payload Property Value Type
project Project
snapshot Snapshot

snapshot-report-finished

Payload Property Value Type
project Project
snapshotReport SnapshotReport

source-finished

Payload Property Value Type
project Project
snapshotReport SnapshotReport

UI Design

Settings:

图片
图片

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Rate-Limited

These updates are currently rate-limited. Click on a checkbox below to force their creation now.

  • chore: Replace npm-run-all version with npm-run-all2 ^5.0.0
  • chore: bump up @mdx-js/loader version to v3
  • chore: bump up @nestjs/schedule version to v4
  • chore: bump up @nestjs/serve-static version to v4
  • chore: bump up @nestjs/throttler version to v5
  • chore: bump up @nestjs/typeorm version to v10
  • chore: bump up @svgr/webpack version to v8
  • chore: bump up @tsconfig/docusaurus version to v2
  • chore: bump up @types/enhanced-resolve version to v5
  • chore: bump up @types/rimraf version to v4
  • chore: bump up @types/supertest version to v6
  • chore: bump up @types/webpack-node-externals version to v3
  • chore: bump up GitHub Artifact Actions to v4 (major) (actions/download-artifact, actions/upload-artifact)
  • chore: bump up Rust crate http to v1
  • chore: bump up Rust crate hyper to v1
  • chore: bump up Rust crate napi-sys to v2
  • chore: bump up Rust crate sourcemap to v8
  • chore: bump up Yarn to v4
  • chore: bump up actions/cache action to v4
  • chore: bump up actions/checkout action to v4
  • chore: bump up actions/setup-node action to v4
  • chore: bump up autoprefixer version to v10 (autoprefixer, @types/autoprefixer)
  • chore: bump up ava version to v6
  • chore: bump up babel-loader version to v9
  • chore: bump up c8 version to v9
  • chore: bump up clsx version to v2
  • chore: bump up codecov/codecov-action action to v4
  • chore: bump up commitlint monorepo to v19 (major) (@commitlint/config-conventional, @commitlint/config-lerna-scopes, commitlint)
  • chore: bump up copy-webpack-plugin version to v12
  • chore: bump up css-loader version to v7
  • chore: bump up cssnano version to v7
  • chore: bump up debian Docker tag to v12
  • chore: bump up docker/build-push-action action to v5
  • chore: bump up docker/login-action action to v3
  • chore: bump up docker/setup-buildx-action action to v3
  • chore: bump up docusaurus monorepo to v3 (major) (@docusaurus/core, @docusaurus/module-type-aliases, @docusaurus/preset-classic, @docusaurus/theme-common, @docusaurus/theme-mermaid)
  • chore: bump up dotenv version to v16
  • chore: bump up emotion-ts-plugin version to v3
  • chore: bump up esbuild-loader version to v4
  • chore: bump up escape-string-regexp version to v5
  • chore: bump up find-cache-dir version to v5 (find-cache-dir, @types/find-cache-dir)
  • chore: bump up fuse.js version to v7
  • chore: bump up github/codeql-action action to v3
  • chore: bump up glob version to v10
  • chore: bump up graphqlcodegenerator monorepo (major) (@graphql-codegen/add, @graphql-codegen/cli, @graphql-codegen/typescript, @graphql-codegen/typescript-operations)
  • chore: bump up htmlparser2 version to v9
  • chore: bump up husky version to v9
  • chore: bump up immer version to v10
  • chore: bump up jest version to v29
  • chore: bump up lerna version to v8
  • chore: bump up less-loader version to v12
  • chore: bump up lighthouse version to v12
  • chore: bump up lint-staged version to v15
  • chore: bump up linter (major) (@typescript-eslint/eslint-plugin, @typescript-eslint/parser, eslint, eslint-config-prettier, eslint-plugin-prettier, eslint-plugin-unicorn)
  • chore: bump up madge version to v7
  • chore: bump up mini-css-extract-plugin version to v2 (mini-css-extract-plugin, @types/mini-css-extract-plugin)
  • chore: bump up mitt version to v3
  • chore: bump up napi-rs to v2 (major) (napi, napi-build, napi-derive)
  • chore: bump up nest monorepo to v10 (major) (@nestjs/common, @nestjs/core, @nestjs/platform-express, @nestjs/terminus, @nestjs/testing)
  • chore: bump up nodemon version to v3
  • chore: bump up np version to v10
  • chore: bump up open version to v10
  • chore: bump up optimize-css-assets-webpack-plugin version to v6
  • chore: bump up p-series version to v3
  • chore: bump up pify version to v6
  • chore: bump up postcss-loader version to v8
  • chore: bump up prettier version to v3 (prettier, @types/prettier)
  • chore: bump up pretty-quick version to v4
  • chore: bump up prism-react-renderer version to v2
  • chore: bump up prom-client version to v15
  • chore: bump up puppeteer-core version to v22
  • chore: bump up query-string version to v9
  • chore: bump up react-devtools-inline version to v5
  • chore: bump up remark-emoji version to v4
  • chore: bump up remark-images version to v4
  • chore: bump up rimraf version to v5
  • chore: bump up sass-loader version to v14
  • chore: bump up sinon version to v17 (sinon, @types/sinon)
  • chore: bump up style-loader version to v4
  • chore: bump up supertest version to v7
  • chore: bump up svelte version to v4
  • chore: bump up svelte-loader version to v3
  • chore: bump up tar version to v7
  • chore: bump up terser-webpack-plugin version to v5 (terser-webpack-plugin, @types/terser-webpack-plugin)
  • chore: bump up thread-loader version to v4
  • chore: bump up ts-import-plugin version to v3
  • chore: bump up ts-morph version to v22
  • chore: bump up typescript version to v5
  • chore: bump up webpack version to v5
  • chore: bump up webpack-dev-server version to v5
  • chore: Lock file maintenance
  • 🔐 Create all rate-limited PRs at once 🔐

Warning

Renovate failed to look up the following dependencies: Failed to look up npm package 3.0.4, Failed to look up npm package 6.2.3.

Files affected: docs/package.json, package.json


Other Branches

These updates are pending. To force PRs open, click the checkbox below.

  • chore: bump up express version to v4.19.2 [SECURITY]
  • chore: bump up tar version to v6.2.1 [SECURITY]

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

cargo
packages/iri/Cargo.toml
  • async-compression 0.3
  • async-stream 0.3
  • bytes 1.0
  • futures 0.3
  • http 0.2
  • hyper 0.14
  • hyper-tls 0.5
  • napi 1
  • napi-derive 1
  • napi-sys 1
  • once_cell 1
  • rustls 0.19
  • tokio 1
  • tokio-native-tls 0.3
  • tokio-rustls 0.22
  • tokio-stream 0.1
  • tokio-util 0.6
  • tower 0.4
  • unicase 2.6
  • napi-build 1
  • jemallocator 0.3
  • mimalloc 0.1
packages/ori/Cargo.toml
  • anyhow 1
  • napi 2
  • napi-derive 2
  • rayon 1.5.0
  • regex 1
  • serde 1.0
  • serde_json 1.0
  • sourcemap 6
  • thiserror 1.0
  • criterion 0.4
  • expect-test 1.4
  • insta 1.19.0
  • napi-build 2
  • mimalloc-rust 0.2
  • mimalloc-rust 0.2
docker-compose
docker-compose.yml
dockerfile
Dockerfile
  • debian stretch
github-actions
.github/workflows/codeql-analysis.yml
  • actions/checkout v3
  • github/codeql-action v2
  • github/codeql-action v2
.github/workflows/commit.yaml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/cache v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/upload-artifact v3.1.2
  • actions/checkout v3
  • actions/setup-node v3
  • actions/upload-artifact v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/download-artifact v3
  • codecov/codecov-action v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
.github/workflows/docker.yaml
  • actions/checkout v3
  • docker/setup-buildx-action v2
  • docker/login-action v2
  • docker/build-push-action v4
.github/workflows/native.yaml
  • actions/checkout v3
  • actions-rs/toolchain v1
  • actions/cache v3
.github/workflows/rebase.yaml
  • actions/checkout v3
  • cirrus-actions/rebase 1.8
.github/workflows/release.yaml
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
  • actions/checkout v3
  • actions/setup-node v3
  • addnab/docker-run-action v3
nodenv
.node-version
npm
docs/package.json
  • @docusaurus/core 2.3.1
  • @docusaurus/preset-classic ^2.3.1
  • @docusaurus/theme-common ^2.3.1
  • @docusaurus/theme-mermaid ^2.3.1
  • @easyops-cn/docusaurus-search-local ^0.33.6
  • clsx ^1.2.1
  • prism-react-renderer ^1.3.5
  • react ^18.2.0
  • react-dom ^18.2.0
  • @docusaurus/module-type-aliases 2.3.1
  • @emotion/babel-plugin ^11.10.0
  • @tsconfig/docusaurus ^1.0.6
  • @typescript-eslint/parser ^5.30.7
  • 3.0.4 3.0.5
package.json
  • @commitlint/config-conventional ^17.0.3
  • @commitlint/config-lerna-scopes ^17.0.2
  • @graphql-codegen/add ^4.0.0
  • @graphql-codegen/cli 3.0.0
  • @graphql-codegen/typescript ^3.0.0
  • @graphql-codegen/typescript-operations ^3.0.0
  • @mdx-js/loader ^2.1.3
  • @rollup/plugin-alias ^3.1.9
  • @rollup/plugin-commonjs 22.0.2
  • @rollup/plugin-json ^4.1.0
  • @rollup/plugin-node-resolve ^13.3.0
  • @svgr/webpack ^6.3.0
  • @types/debug ^4.1.7
  • @types/inquirer ^9.0.0
  • @types/lodash ^4.14.182
  • @types/nodemon ^1.19.1
  • @types/prettier ^2.6.4
  • @types/react ^18.0.15
  • @types/react-dom ^18.0.6
  • @types/sinon ^10.0.12
  • @types/supertest ^2.0.12
  • @types/webpack-node-externals ^2.5.3
  • @types/yup ^0.29.14
  • @typescript-eslint/eslint-plugin ^5.30.7
  • @typescript-eslint/parser ^5.30.7
  • ava ^5.0.0
  • c8 ^7.11.3
  • chalk ^4.1.2
  • chokidar ^3.5.3
  • clipanion ^3.1.0
  • commitlint ^17.0.3
  • copy-webpack-plugin ^11.0.0
  • cross-env ^7.0.3
  • css-loader ^6.7.1
  • cssnano ^5.1.12
  • emotion-ts-plugin ^2.0.1
  • esbuild ~0.16.0
  • eslint ^8.20.0
  • eslint-config-prettier ^8.5.0
  • eslint-plugin-import ^2.26.0
  • eslint-plugin-prettier ^4.2.1
  • eslint-plugin-react ^7.30.1
  • eslint-plugin-react-hooks ^4.6.0
  • eslint-plugin-sonarjs ^0.18.0
  • eslint-plugin-unicorn ^45.0.0
  • extract-comments ^1.1.0
  • fdir ^5.2.0
  • graphql ^16.0.0
  • html-webpack-plugin ^5.5.0
  • husky ^8.0.1
  • inquirer ^9.0.1
  • lerna ^6.0.0
  • lint-staged ^13.0.3
  • madge ^5.0.1
  • mini-css-extract-plugin ^2.6.1
  • node-fetch ^2.6.2
  • nodemon ^2.0.19
  • npm-run-all ^4.1.5
  • path-to-regexp 1.8.0
  • postcss-loader ^7.0.1
  • prettier ^2.7.1
  • raw-loader ^4.0.2
  • react-devtools-inline ^4.27.2
  • remark-emoji ^3.0.2
  • remark-images ^3.1.0
  • rollup ^2.77.0
  • rollup-plugin-dts ^4.2.2
  • rollup-plugin-sourcemaps ^0.6.3
  • shx ^0.3.4
  • sinon ^15.0.0
  • style-loader ^3.3.3
  • supertest ^6.3.3
  • svgo ^3.0.0
  • svgo-loader ^3.0.1
  • terser-webpack-plugin ^5.3.3
  • thread-loader ^3.0.4
  • ts-import-plugin ^2.0.0
  • ts-loader ^9.3.1
  • ts-node ^10.9.1
  • tsconfig-paths ^4.0.0
  • tslib ^2.4.0
  • typescript ~4.7.4
  • vite ^3.0.2
  • wait-on ^7.0.0
  • webpack ^5.73.0
  • webpack-cli ^5.0.0
  • webpack-dev-server ^4.9.3
  • webpack-merge ^5.8.0
  • webpack-node-externals ^3.0.0
  • why-is-node-running ^2.2.2
  • yup ^0.32.11
  • jpeg-js 0.4.4
  • 6.2.3 6.2.4
  • yarn 3.4.1
packages/bundle-analyzer/package.json
  • @eyhn/msgpack-stream ^2.8.4
  • acorn ^8.7.1
  • acorn-walk ^8.2.0
  • htmlparser2 ^8.0.1
  • lodash ^4.17.21
  • query-string ^7.1.1
  • tar ^6.1.11
  • tslib ^2.4.0
  • isolated-vm ^4.7.2
packages/bundle-analyzer/src/stats-parser/audit/__extensions__/package.json
packages/bundle-report/package.json
  • @abraham/reflection ^0.12.0
  • @ant-design/icons ^5.0.0
  • @emotion/react ^11.9.3
  • @emotion/styled ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/theme ^2.6.22
  • dayjs ^1.11.3
  • lodash ^4.17.21
  • query-string ^7.1.1
  • react-router ^5.2.1
  • react-router-dom ^5.3.0
  • shiki ^1.1.6
  • @types/mdx-js__react ^1.5.5
packages/chrome-finder/package.json
  • puppeteer-core ^21.11.0
packages/components/package.json
  • @ant-design/icons ^5.0.0
  • @emotion/react ^11.9.3
  • @emotion/styled ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/theme ^2.6.22
  • @sigi/core ^2.12.1
  • @sigi/react ^2.12.2
  • dayjs ^1.11.3
  • echarts ^5.3.3
  • immer ^9.0.15
  • lodash ^4.17.21
  • query-string ^7.1.1
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-helmet ^6.1.0
  • react-router ^5.2.1
  • react-router-dom ^5.3.0
  • rxjs ^7.5.6
  • @types/react-helmet ^6.1.5
packages/components/src/icon/package.json
  • @ant-design/icons ^5.0.0
  • lodash ^4.17.21
packages/dls/package.json
  • @emotion/core ^11.0.0
  • @emotion/react ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/theme ^2.6.22
  • color-converters ^0.1.1
  • react ^18.2.0
packages/email-templates/package.json
  • @maizzle/framework ^4.0.2
packages/flamechart/package.json
  • @types/react-devtools-inline ^4.24.3
  • tslib ^2.4.0
packages/iri/package.json
  • @napi-rs/cli ^2.11.4
packages/jsonr/package.json
  • tslib ^2.4.0
packages/lab-report/package.json
  • @abraham/reflection ^0.12.0
  • @ant-design/icons ^5.0.0
  • @emotion/react ^11.9.3
  • @emotion/styled ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/react-icons-mdl2 ^1.3.31
  • @fluentui/theme ^2.6.22
  • @sigi/core ^2.12.1
  • @sigi/di ^2.11.3
  • @sigi/react ^2.12.2
  • dayjs ^1.11.3
  • echarts ^5.3.3
  • fuse.js ^6.6.2
  • immer ^9.0.15
  • lodash ^4.17.21
  • query-string ^7.1.1
  • react-router ^5.2.1
  • react-virtualized-auto-sizer ^1.0.7
  • react-window ^1.8.8
  • rxjs ^7.5.6
  • @types/mdx-js__react ^1.5.5
packages/ori/package.json
  • @napi-rs/cli ^2.11.4
packages/package-build-stats/package.json
  • @babel/core ^7.13.8
  • @babel/parser ^7.13.9
  • @babel/plugin-proposal-export-default-from ^7.12.13
  • @babel/traverse ^7.13.0
  • autoprefixer ^9.7.6
  • babel-eslint ^10.1.0
  • babel-loader ^8.3.0
  • builtin-modules ^3.1.0
  • css-loader ^4.3.0
  • cssnano ^4.1.10
  • csso-webpack-plugin ^2.0.0-beta.1
  • debug ^4.2.0
  • enhanced-resolve ^5.7.0
  • esbuild ^0.11.4
  • esbuild-loader ^2.11.0
  • escape-string-regexp ^2.0.0
  • fast-safe-stringify ^2.0.7
  • file-loader ^6.1.1
  • is-valid-npm-name ^0.0.5
  • less ^4.1.1
  • less-loader ^7.3.0
  • lodash ^4.17.21
  • memory-fs ^0.5.0
  • mini-css-extract-plugin ^1.3.9
  • mitt ^2.1.0
  • node-fetch ^2.6.1
  • np ^7.4.0
  • optimize-css-assets-webpack-plugin ^5.0.4
  • performance-now ^2.1.0
  • pify ^5.0.0
  • postcss-loader ^3.0.0
  • rimraf ^3.0.2
  • sanitize-filename ^1.6.3
  • sass ^1.52.3
  • sass-loader ^8.0.2
  • server ^1.0.32
  • shebang-loader ^0.0.1
  • shortid ^2.2.15
  • stats-lite ^2.1.0
  • string-replace-loader ^3.0.1
  • svelte ^3.35.0
  • svelte-loader ^2.13.6
  • terser ^5.6.0
  • terser-webpack-plugin ^4.2.3
  • vm2 ^3.9.7
  • webpack ^4.44.2
  • webpack-merge ^5.9.0
  • write-file-webpack-plugin ^4.5.1
  • @babel/preset-env ^7.13.9
  • @babel/preset-typescript ^7.13.0
  • @babel/types ^7.21.4
  • @types/autoprefixer 9
  • @types/babel__traverse ^7.11.0
  • @types/enhanced-resolve ^3.0.6
  • @types/lodash ^4.14.168
  • @types/memory-fs ^0.3.2
  • @types/mini-css-extract-plugin ^1.2.2
  • @types/rimraf ^3.0.0
  • @types/shortid ^0.0.29
  • @types/stats-lite ^2.2.0
  • @types/terser-webpack-plugin 4
  • @types/write-file-webpack-plugin ^4.5.0
  • dotenv ^8.2.0
  • husky ^4.3.0
  • jest ^28.1.3
  • p-series ^2.1.0
  • prettier ^2.1.2
  • pretty-quick ^3.1.0
  • ts-node ^10.9.1
  • ts-node-dev ^2.0.0
  • typescript ^4.2.3
  • npm >=4.x.x
packages/package-report/package.json
  • @abraham/reflection ^0.12.0
  • @ant-design/icons ^5.0.0
  • @emotion/react ^11.9.3
  • @emotion/styled ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/theme ^2.6.22
  • dayjs ^1.11.3
  • lodash ^4.17.21
  • query-string ^7.1.1
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-router ^5.2.1
  • react-router-dom ^5.3.0
  • @types/mdx-js__react ^1.5.5
packages/package/package.json
  • @arrows/composition ^1.2.2
  • @arrows/dispatch ^1.0.3
  • benchmark ^2.1.4
  • chalk ^4.1.2
  • clipanion ^3.1.0
  • esbuild ^0.17.11
  • find-cache-dir ^3.3.2
  • glob ^9.2.1
  • node-fetch ^2.6.2
  • open ^8.4.2
  • puppeteer-core ^21.11.0
  • simple-git ^3.15.0
  • tar ^6.1.13
  • ts-node ^10.9.1
  • tslib ^2.5.0
  • @types/benchmark ^2.1.2
  • package-json-type ^1.0.3
packages/platform-server/package.json
  • @apollo/server ^4.6.0
  • @aws-sdk/client-s3 ^3.449.0
  • @aws-sdk/lib-storage ^3.449.0
  • @nestjs/apollo ^11.0.5
  • @nestjs/common ^9.4.0
  • @nestjs/core ^9.4.0
  • @nestjs/event-emitter ^1.4.1
  • @nestjs/graphql ^11.0.5
  • @nestjs/platform-express ^9.4.0
  • @nestjs/schedule ^2.2.1
  • @nestjs/serve-static ^3.0.1
  • @nestjs/swagger ^7.3.0
  • @nestjs/terminus ^9.2.2
  • @nestjs/testing ^9.4.0
  • @nestjs/throttler ^4.0.0
  • @nestjs/typeorm ^9.0.1
  • acorn ^8.7.1
  • body-parser ^1.20.2
  • chalk ^4.1.2
  • clipanion ^3.1.0
  • dataloader ^2.1.0
  • dayjs ^1.11.3
  • debug ^4.3.4
  • dotenv ^16.0.1
  • express ^4.18.2
  • express-session ^1.17.3
  • file-type ^16.5.4
  • form-data ^4.0.0
  • graphql ^16.6.0
  • graphql-type-json ^0.3.2
  • ioredis ^5.3.2
  • json-bigint ^1.0.0
  • lodash ^4.17.21
  • mysql2 ^2.3.3
  • nest-router ^1.0.9
  • node-abort-controller ^3.0.1
  • node-fetch ^2.6.2
  • nodemailer ^6.7.7
  • prom-client 14.1.1
  • query-string ^7.1.1
  • redlock ^4.2.0
  • reflect-metadata 0.2.1
  • rxjs ^7.5.6
  • ts-morph ^15.1.0
  • typeorm ^0.3.15
  • uuid ^9.0.0
  • @faker-js/faker ^7.3.0
  • @nestjs/serve-static ^3.0.1
  • @types/debug ^4.1.7
  • @types/express-session ^1.17.5
  • @types/json-bigint ^1.0.1
  • @types/nodemailer ^6.4.4
  • @types/redlock ^4.0.3
  • @types/uuid ^9.0.0
  • ava ^5.0.0
  • sinon ^15.0.0
  • supertest ^6.3.3
packages/platform/package.json
  • @abraham/reflection ^0.12.0
  • @ant-design/icons ^5.0.0
  • @emotion/css ^11.9.0
  • @emotion/react ^11.9.3
  • @emotion/styled ^11.9.3
  • @fluentui/react ^8.105.5
  • @fluentui/react-hooks ^8.6.16
  • @fluentui/react-icons-mdl2 ^1.3.31
  • @fluentui/theme ^2.6.22
  • @fluentui/utilities ^8.13.6
  • @sigi/core ^2.12.1
  • @sigi/di ^2.11.3
  • @sigi/react ^2.12.2
  • color ^4.2.3
  • color-converters ^0.1.1
  • dayjs ^1.11.3
  • echarts ^5.3.3
  • fuse.js ^6.6.2
  • graphql ^16.0.0
  • immer ^9.0.15
  • lodash ^4.17.21
  • modern-css-reset ^1.4.0
  • path-to-regexp ^1.8.0
  • query-string ^7.1.1
  • react ^18.2.0
  • react-dom ^18.2.0
  • react-router ^5.2.1
  • react-router-dom ^5.3.0
  • react-virtualized-auto-sizer ^1.0.7
  • react-window ^1.8.8
  • rxjs ^7.5.6
  • @sigi/devtool ^2.12.1
  • @types/mdx-js__react ^1.5.5
  • @types/react ^18.0.15
  • @types/react-dom ^18.0.6
  • @types/react-router ^5.1.17
  • @types/react-router-dom ^5.3.2
  • @types/react-virtualized-auto-sizer 1.0.1
  • @types/react-window ^1.8.5
packages/plugins/esbuild/package.json
  • chalk ^4.1.2
  • lodash ^4.17.21
  • tslib ^2.4.0
  • esbuild ~0.16.0
packages/plugins/rollup/package.json
  • chalk ^4.1.2
  • lodash ^4.17.21
  • tslib ^2.4.0
  • rollup ^2.77.0
packages/plugins/utils/package.json
  • chalk ^4.1.2
  • debug 4.3.4
  • find-cache-dir ^3.3.2
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • open ^8.4.2
  • query-string ^7.1.1
  • simple-git ^3.15.0
  • table ^6.8.0
  • tar ^6.1.11
  • tslib ^2.4.0
  • uuid ^9.0.0
  • @types/find-cache-dir ^3.2.1
  • @types/table ^6.3.2
  • @types/uuid ^9.0.0
packages/plugins/webpack/package.json
  • chalk ^4.1.2
  • tslib ^2.4.0
packages/runner/bundle/package.json
  • uuid ^9.0.0
  • ts-node ^10.9.1
packages/runner/executor/package.json
  • @ffmpeg-installer/ffmpeg ^1.1.0
  • chalk ^4.1.2
  • clipanion ^3.1.0
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • tar ^6.1.11
  • uuid ^9.0.0
  • winston ^3.7.2
packages/runner/lab/package.json
  • acorn ^8.7.1
  • acorn-walk ^8.2.0
  • fluent-ffmpeg ^2.1.2
  • jimp ^0.22.0
  • lighthouse 11.6.0
  • lighthouse-logger ^2.0.1
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • puppeteer-core ^21.11.0
  • uuid ^9.0.0
  • vm2 ^3.9.11
  • @types/fluent-ffmpeg ^2.1.20
  • @types/react-devtools-inline ^4.24.3
  • ts-node ^10.9.1
packages/runner/package/package.json
  • uuid ^9.0.0
  • ts-node ^10.9.1
packages/runner/shared/package.json
  • chalk ^4.1.2
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • winston ^3.8.1
  • winston-transport ^4.5.0
packages/runner/source/package.json
  • lodash ^4.17.21
  • uuid ^9.0.0
  • ts-node ^10.9.1
packages/schema/package.json
packages/sdk/package.json
  • chalk ^4.1.2
  • clipanion ^3.1.0
  • graphql ^16.0.0
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • simple-git ^3.15.0
packages/server-common/package.json
packages/shared/package.json
  • @fluentui/react ^8.105.5
  • @sigi/di ^2.11.3
  • dayjs ^1.11.3
  • lodash ^4.17.21
  • query-string ^7.1.1
  • rxjs ^7.5.6
  • graphql ^16.0.0
  • react ^18.2.0
packages/source-coverage/package.json
  • lighthouse 11.6.0
packages/tracehouse/package.json
  • lighthouse 11.6.0
packages/treemap/package.json
  • @types/d3-hierarchy ^3.1.0
  • d3-hierarchy ^3.1.2
  • tslib ^2.4.0
  • twgl.js ^5.0.0
packages/utils/package.json
  • tslib ^2.4.0
packages/vscode-extension/package.json
  • @types/diff ^5.0.2
  • diff ^5.1.0
  • graphql ^16.0.0
  • isomorphic-git ^1.18.3
  • lodash ^4.17.21
  • node-fetch ^2.6.2
  • react ^18.2.0
  • react-dom ^18.2.0
  • vscode ^1.63.0

  • Check this box to trigger a request for Renovate to run again on this repository

correct dataloader return type

The normal returns of loader should be T | null or T | Error, but in the very beginning, for convenience, we made it only T which introduced some bugs we've met

Did not receive password reset email

I forget my password, then I click the "Send password reset email", but I have not received email, and it's not in spam.

I tried gmail and company email, same result

Configurable system features

For short, We need a way to easily open/close system features like:

  • whether allow user registration
  • whether allow manually project creating
  • ...

First idea coming from #105

UI reorganization

  • move project first level navigator(modules) to the very top under page header
  • limit page main content max width (1280px), but allow override it if wide screen presentation required
  • clarify layout & content management

brief idea:
image

function Entry() {
  return (
    <Layout width="100%" /* default: 1280px */>
      <Content />
    </Layout>
  )
}

Cannot run in no-git env

Because of this code:

export const BUILD_ENV: BuildEnv = {
  isCi: envs.isCi,
  pwd: 'root' in envs && envs.root ? envs.root : process.cwd(),
  platform: process.env.PERFSEE_PLATFORM_HOST ?? 'https://perfsee.com',
  upload: !process.env.PERFSEE_NO_UPLOAD && envs.isCi,
  git: gitEnvPromise.then((gitEnv) => (gitEnv ? Promise.resolve(gitEnv) : getGitEnv())),
}

in init, will call getGitEnv and fetch git context, but its not good in some no-git environment for example: vercel deploy.

Maybe we should get this variable when we use it?

Organization system research

An organization may be a group that consists of several projects, so that owner&reviewer can check the brief performance information, like score growth, in one single page in the easiest way.

@lizimeow research and design

Tutorial about how to integration with users' deployment processes

Perfsee can analyze performance of applications after every deployment and send rich performance reports to developers to keep them informed of performance changes in new releases.

Tracking Pull request performance

Deploy test environment for each Pull Request, and perfsee will automatically analyze performance for each pull request and show performance reports in the Pull Request comments.

Integration

Perfsee provides multiple ways to integrate with your existing deployment (pipeline/platform/workflow) with minimal changes.

    • Vercel
    • Netlify
    • Github Action #80

    https://github.com/EYHN/perfsee-action-test

  • Github Deployments are requests to deploy a specific ref (branch, SHA, tag). GitHub dispatches a deployment event that external services can listen for and act on when new deployments are created. Github Deployments enable developers and organizations to build loosely coupled tooling around deployments, without having to worry about the implementation details of delivering different types of applications.

    Perfsee can be used with Github Deployments by creating a simple github action workflow.

    Create access token

    Follow the tutorial here create an access token.

    In your Github repository, go to Settings > Secrets > Action to save the Access Token you just created as PERFSEE_TOKEN for action use.

    Create same environments on Perfsee and Github

    You need to make sure you have created environments on perfsee with the same name as github, for Github Page usually be github-pages. To check environments, open Settings > Environments in Github repository and Settings > Environments in Perfsee project.

    图片

    Create github action workflow

    Create a new action workflow .github/workflows/after-deploy.yaml in your repository.

    name: After deploy
    
    on: [deployment_status]
    
    jobs:
      lab:
        # only runs this job on successful deploy
        if: github.event.deployment_status.state == 'success'
        runs-on: ubuntu-latest
        steps:
          - name: Run lab
            uses: EYHN/[email protected]
            with:
              project: perfsee
              token: ${{ secrets.PERFSEE_TOKEN }}

    Trigger a deployment

    Create a deployment or deploy a github page, you can see the status of the deployment in your pull request or https://github.com/xxx/xxx/deployments, and when the deployment is done you can see the github action running successfully and the perfsee lab test in your commit.

    Deployment stats:

    图片图片

    Github action and perfsee lab:

    图片
    • Command Line Tool

    After deployment, you can use command line tool to start a lab scan from your automatic deployment script or the terminal. Be aware that the lab scan requires access to your application, make sure the application is ready to use.

    Create access token

    Follow the tutorial here create an access token and save it for later use.

    Installation

    Use the following command to install command-line tools via npm.

    Detail documentation for @perfsee/sdk

    npm install -g @perfsee/sdk

    Trigger a lab scan

    After your application has been deployed, run the following command to start a lab scan.

    In the command you need to provide the access token which you created earlier and the project id, and the git commit hash of this deployment to match the lab snapshot to the commit.

    perfsee take-snapshot --token <access-token> --project <projectId> --hash <commit-hash>

    If success it will log out Created snapshot #1 and you can view the results on the platform.

test coverage only scan concurrent tests

Like in #154 , only *.spec.ts impact files are shown in coverage list. Some serial.spec.ts are not included.

And the coverage percentage result is exactly same as I run yarn c8 yarn test:concurrent at local.

It seems like a bug in actions.

期望可以本地跑效果

目前只能 github 导入项目,期望开放本地创建项目

image

作为性能分析平台,期望能先本地跑服务,并能验证各项功能,这样才方便推广到团队项目接入进去

Refactor UI of user center

  • user avatar drodown
    • profile
    • access tokens
    • (separator)
    • logout

--- user center

  • profile
    • email
    • avatar
    • first name/last name
    • connected accounts
    • delete account
  • access tokens

improve environment creation experience

allow user to bulk create cookies and header from clipboard

cookies maybe in the form like "a=encoded; b=other"
headers maybe in the form like "x-header: a\r\nx-other-header: b"

make environment field concrete types instead of `JSON` or `any`

currently, if I look into the environment graphql type, some of the fields listed as JSON that are so confusing

type Environment {
  // ...
  """extra cookies add to requests"""
  cookies: JSON!

  """extra headers add to requests"""
  headers: JSON!
  
  """extra localStorage value inserted into page"""
  localStorage: JSON
}

simplify script recording of E2E workflow

let user easily import e2e scripts from other tools like chrome devtool with specific rule limited

allow:

- click
- input
- scroll
- ...

disallow:

- new tab navigation
- close page
- ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.