-
Notifications
You must be signed in to change notification settings - Fork 0
/
gatsby-node.js
115 lines (103 loc) · 2.5 KB
/
gatsby-node.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
exports.createSchemaCustomization = ({ actions }) => {
const { createTypes } = actions;
const typeDefs = `
type CucumberReport implements Node {
features: [CucumberReportFeature]
}
type CucumberReportFeature {
keyword: String
description: String
line: Int
name: String
uri: String
id: String
metadata: CucumberReportMetadata
elements: [CucumberReportElements]
tags: [CucumberReportTags]
}
type CucumberReportPlatform {
name: String
version: String
}
type CucumberReportBrowser {
name: String
version: String
}
type CucumberReportMetadata {
device: String
platform: CucumberReportPlatform
browser: CucumberReportBrowser
}
type CucumberReportMatch {
location: String
}
type CucumberReportResult {
status: String
duration: Int
}
type CucumberReportSteps {
keyword: String
name: String
line: String
match: CucumberReportMatch
result: CucumberReportResult
arguments: [String]
embeddings: [CucumberReportEmbedding]
}
type CucumberReportLocation {
line: Int
column: Int
}
type CucumberReportElements {
keyword: String
description: String
name: String
id: String
steps: [CucumberReportSteps]
tags: [CucumberReportTags]
}
type CucumberReportTags {
type: String
name: String
location: CucumberReportLocation
}
type CucumberReportEmbedding {
data: String
mime_type: String
}
`;
createTypes(typeDefs);
};
exports.onCreateNode = async ({
node,
loadNodeContent,
createNodeId,
createContentDigest,
actions
}) => {
// only look for nodes of mediaType `application/json`
if (node.internal.mediaType !== `application/json`) {
return;
}
const content = await loadNodeContent(node);
const report = {};
report.features = JSON.parse(content).filter(
item => item.keyword && item.keyword === "Feature"
);
if (report.features.length > 0) {
const { createNode, createParentChildLink } = actions;
const reportId = createNodeId(`${node.id} >>> CUCUMBER REPORT`);
const reportNode = {
...report,
id: reportId,
children: [],
parent: node.id,
internal: {
contentDigest: createContentDigest(report),
type: "CucumberReport"
}
};
createNode(reportNode);
createParentChildLink({ parent: node, child: reportNode });
}
};