Skip to content

Commit e08cc5d

Browse files
committed
fix: krausest#1141 and krausest#527 Add framework URL and code link
1 parent b359747 commit e08cc5d

File tree

9 files changed

+38
-11
lines changed

9 files changed

+38
-11
lines changed

README.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -325,18 +325,20 @@ Your package.json must include some information for the benchmark. Since you cop
325325
```
326326
...
327327
"js-framework-benchmark": {
328-
"frameworkVersion": ""
328+
"frameworkVersion": "",
329+
"frameworkHomeURL": ""
329330
},
330331
...
331332
```
332333

333-
This one is a bit exceptional since vanillajs has no version. If you use a normal framework like react it carries a version information. For most frameworks you'll add a
334+
This one is a bit exceptional since vanillajs has no version and there no framework involved. If you use a normal framework like react it carries a version information and the framework should have an URL. For most frameworks you'll add a
334335
dependency to your framework in package.json. The benchmark can automatically determine the correct version information from package.json and package-lock.json if you specify the
335336
package name like that:
336337

337338
```
338339
"js-framework-benchmark": {
339340
"frameworkVersionFromPackage": "react"
341+
"frameworkHomeURL": "https://www.reactjs.org"
340342
},
341343
```
342344

@@ -357,6 +359,7 @@ You can set an optional different URL if needed or specify that your DOM uses a
357359
Contributions are very welcome. Please use the following rules:
358360

359361
- Name your directory frameworks/[keyed|non-keyed]/[FrameworkName]
362+
- The package.json in your directory must contain some important information see section 4.2 above.
360363
- Each contribution must be buildable by `npm install` and `npm run build-prod` command in the directory. What build-prod does is up to you. Often there's an `npm run build-dev` that creates a development build
361364
- Every implementation must use bootstrap provided in the root css directory.
362365
- All npm dependencies should be installed locally (i.e. listed in your package.json). Http-server or other local web servers should not be local dependencies. It is installed from the root directory to allow access to bootstrap.

frameworks/keyed/1more/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "1more demo",
55
"main": "dist/app.min.js",
66
"js-framework-benchmark": {
7-
"frameworkVersionFromPackage": "1more"
7+
"frameworkVersionFromPackage": "1more",
8+
"frameworkHomeURL": "https://github.com/Freak613/1more"
89
},
910
"scripts": {
1011
"build-dev": "rollup -c -w",

frameworks/keyed/react/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"description": "React demo",
55
"main": "index.js",
66
"js-framework-benchmark": {
7-
"frameworkVersionFromPackage": "react"
7+
"frameworkVersionFromPackage": "react",
8+
"frameworkHomeURL": "https://www.reactjs.org"
89
},
910
"scripts": {
1011
"build-dev": "webpack --watch",

server/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ async function loadFrameworkInfo(keyedDir, directoryName) {
2323
let copyProps = (result, packageJSON) => {
2424
result.issues = packageJSON["js-framework-benchmark"]["issues"];
2525
result.customURL = packageJSON["js-framework-benchmark"]["customURL"];
26+
result.frameworkHomeURL = packageJSON["js-framework-benchmark"]["frameworkHomeURL"];
2627
let useShadowRoot = packageJSON["js-framework-benchmark"]["useShadowRoot"];
2728
result.useShadowRoot = useShadowRoot;
2829
result.useRowShadowRoot = packageJSON["js-framework-benchmark"]["useRowShadowRoot"];

webdriver-ts-results/src/Common.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface Framework {
1313
dir: string;
1414
type: FrameworkType;
1515
issues: number[];
16+
frameworkHomeURL: string;
1617
displayname: string;
1718
}
1819

@@ -30,7 +31,8 @@ export const categories: Category[] = [
3031
{id:2, text:"[Note]:View state on the model", issues: [800], severity: Severity.Note},
3132
{id:3, text:"[Note]: Explicit requestAnimationFrame calls", issues: [796], severity: Severity.Note},
3233
{id:4, text:"[Note]: Manual event delegation", issues: [801], severity: Severity.Note},
33-
{id:5, text:"[Issue]: Errors in the implementation", issues: [634], severity: Severity.Error},
34+
{id:5, text:"[Note]: Implementation uses runtime code generation", issues: [1139], severity: Severity.Note},
35+
{id:6, text:"[Issue]: Errors in the implementation", issues: [634], severity: Severity.Error},
3436
]
3537

3638
interface IIssue {
@@ -46,7 +48,8 @@ export const knownIssues: IIssue[] = [
4648
{issue: 796, severity: Severity.Note, text:"[Note]: Implementation uses explicit requestAnimationFrame calls", link: "https://github.com/krausest/js-framework-benchmark/issues/796"},
4749
{issue: 800, severity: Severity.Note, text:"[Note]: View state on the model", link: "https://github.com/krausest/js-framework-benchmark/issues/800"},
4850
{issue: 801, severity: Severity.Note, text:"[Note]: Implementation uses manual event delegation", link: "https://github.com/krausest/js-framework-benchmark/issues/801"},
49-
];
51+
{issue: 1139, severity: Severity.Note, text:"[Note]: Implementation uses runtime code generation", link: "https://github.com/krausest/js-framework-benchmark/issues/1139"},
52+
];
5053

5154
export function findIssue(issueNumber: number): IIssue|undefined {
5255
return knownIssues.find(i => i.issue === issueNumber)

webdriver-ts-results/src/reducer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const removeKeyedSuffix = (value: string) => {
2121
else if (value.endsWith('-keyed')) return value.substring(0, value.length - 6)
2222
return value;
2323
}
24-
const mappedFrameworks = frameworks.map((f:any) => ({ name: f.name, dir: f.dir, displayname: removeKeyedSuffix(f.name), issues: f.issues ?? [], type: f.keyed ? FrameworkType.KEYED : FrameworkType.NON_KEYED }));
24+
const mappedFrameworks = frameworks.map((f:any) => ({ name: f.name, dir: f.dir, displayname: removeKeyedSuffix(f.name), issues: f.issues ?? [], type: f.keyed ? FrameworkType.KEYED : FrameworkType.NON_KEYED, frameworkHomeURL: f.frameworkHomeURL }));
2525

2626
const allBenchmarks = benchmarks.reduce((set, b) => set.add(b), new Set<Benchmark>());
2727
const allFrameworks = mappedFrameworks.reduce((set, f) => set.add(f), new Set<Framework>());

webdriver-ts-results/src/tables/CpuResultsTable.tsx

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
import React from 'react'
2-
import {ResultTableData, SORT_BY_NAME, SORT_BY_GEOMMEAN_CPU, BenchmarkType} from '../Common';
2+
import {ResultTableData, SORT_BY_NAME, SORT_BY_GEOMMEAN_CPU, BenchmarkType, Framework} from '../Common';
33
import GeomMeanRow from './GeomMeanRow'
44
import CompareRow from './CompareRow'
55
import ValueResultRow from './ValueResultRow'
66

77
const CpuResultsTable = ({data, currentSortKey, sortBy}: {data: ResultTableData; currentSortKey: string; sortBy: (name: string) => void}): JSX.Element|null => {
88
const resultsCPU = data.getResult(BenchmarkType.CPU);
9+
10+
911
return resultsCPU.results.length===0 ? null :
1012
(<div>
1113
<h3>Duration in milliseconds ± 95% confidence interval (Slowdown = Duration / Fastest)</h3>
1214
<table className='results'>
1315
<thead>
14-
<tr>
16+
<tr>
1517
<th className='benchname'><button className={currentSortKey===SORT_BY_NAME ? 'sortKey textButton' : 'textButton'} onClick={(event) => {event.preventDefault(); sortBy(SORT_BY_NAME)}}>Name</button><br/>Duration for...</th>
16-
{data.frameworks.map((f,idx) => <th key={idx}>{f.displayname}</th>)}
18+
{data.frameworks.map((f,idx) => <th key={idx}>{
19+
f.frameworkHomeURL ? <a target="_blank" href={f.frameworkHomeURL}>{f.displayname}</a> : f.displayname
20+
}
21+
</th>)}
1722
</tr>
1823
</thead>
1924
<thead>
@@ -27,6 +32,15 @@ const CpuResultsTable = ({data, currentSortKey, sortBy}: {data: ResultTableData;
2732
</th>)}
2833
</tr>
2934
</thead>
35+
<thead>
36+
<tr>
37+
<th>Implementation link</th>
38+
{data.frameworks.map(f =>
39+
<th key={f.name} >
40+
<a target="_blank" href={"https://github.com/krausest/js-framework-benchmark/tree/master/frameworks/"+f.dir}>code</a>
41+
</th>)}
42+
</tr>
43+
</thead>
3044
<tbody>
3145
{resultsCPU.results.map((resultsForBenchmark, benchIdx) =>
3246
<ValueResultRow key={resultsCPU.benchmarks[benchIdx]?.id} benchIdx={benchIdx} resultsForBenchmark={resultsForBenchmark} benchmarks={resultsCPU.benchmarks} currentSortKey={currentSortKey} sortBy={sortBy}/>

webdriver-ts/src/common.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ export interface FrameworkData {
8686
shadowRootName: string | undefined;
8787
buttonsInShadowRoot: boolean;
8888
issues: number[];
89+
frameworkHomeURL: string;
8990
}
9091

9192
interface Options {
@@ -110,6 +111,7 @@ export interface FrameworkInformation {
110111
buttonsInShadowRoot?: boolean;
111112
versions?: {[key: string]: string};
112113
frameworkVersionString: string;
114+
frameworkHomeURL: string;
113115
}
114116

115117
export interface IMatchPredicate {
@@ -145,7 +147,8 @@ export async function initializeFrameworks(matchPredicate: IMatchPredicate = mat
145147
useRowShadowRoot: !!frameworkVersionInformation.useRowShadowRoot,
146148
shadowRootName: frameworkVersionInformation.shadowRootName,
147149
buttonsInShadowRoot: !!frameworkVersionInformation.buttonsInShadowRoot,
148-
issues: (frameworkVersionInformation.issues ?? []).map(i => Number(i))
150+
issues: (frameworkVersionInformation.issues ?? []).map(i => Number(i)),
151+
frameworkHomeURL: frameworkVersionInformation.frameworkHomeURL ?? ""
149152
});
150153
}
151154
}

webdriver-ts/src/createResultJS.ts

+1
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ async function main() {
8888
dir: (f.keyed ? "keyed/" : "non-keyed/" ) + f.name,
8989
keyed: f.keyed,
9090
issues: f.issues && f.issues.length > 0 ? f.issues : undefined,
91+
frameworkHomeURL: f.frameworkHomeURL ?? ""
9192
})
9293
)
9394
) +

0 commit comments

Comments
 (0)