@gitlab/jest-metrics-exporter 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -11
- package/dist/annotations.d.ts +31 -0
- package/dist/annotations.d.ts.map +1 -0
- package/dist/annotations.js +145 -0
- package/dist/annotations.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/metric.d.ts +1 -1
- package/dist/metric.d.ts.map +1 -1
- package/dist/metric.js +37 -3
- package/dist/metric.js.map +1 -1
- package/dist/reporter.d.ts.map +1 -1
- package/dist/reporter.js +2 -7
- package/dist/reporter.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -61,17 +61,18 @@ Options can be passed via the reporter-options object (second element of the
|
|
|
61
61
|
tuple in `reporters`) or via environment variables. Explicit options always
|
|
62
62
|
take precedence over the corresponding environment variable.
|
|
63
63
|
|
|
64
|
-
| Option | Env var | Description
|
|
65
|
-
| -------------------- | ----------------------------- |
|
|
66
|
-
| `runType` | `GLCI_TEST_METRICS_RUN_TYPE` | Suite name (falls back to `CI_JOB_NAME
|
|
67
|
-
| `
|
|
68
|
-
| `
|
|
69
|
-
| `
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
64
|
+
| Option | Env var | Description |
|
|
65
|
+
| -------------------- | ----------------------------- | -------------------------------------------------------------------------- |
|
|
66
|
+
| `runType` | `GLCI_TEST_METRICS_RUN_TYPE` | Suite name (falls back to `testLevel`, then `CI_JOB_NAME`, or `"unknown"`) |
|
|
67
|
+
| `testLevel` | `GLCI_TEST_METRICS_TEST_LEVEL`| Suite-wide test level / tier (e.g. `unit`, `integration`) |
|
|
68
|
+
| `observerUrl` | `GLCI_OBSERVER_URL` | Observer service base URL |
|
|
69
|
+
| `observerToken` | `GLCI_OBSERVER_AUTH_TOKEN` | Auth token sent as `X-Gitlab-Token` |
|
|
70
|
+
| `specFilePathPrefix` | _(none)_ | Prepended to file paths (useful for monorepos) |
|
|
71
|
+
| `extraMetadataKeys` | _(none)_ | Magic-comment keys forwarded verbatim into the metric record (see below) |
|
|
72
|
+
| `skipRecord` | _(none)_ | `(testCase) => boolean`; return `true` to drop the record |
|
|
73
|
+
| `testRetried` | _(none)_ | `(testCase) => boolean`; return `true` if this run was a retry |
|
|
74
|
+
| `customMetrics` | _(none)_ | `(testCase) => object`; merged into every metric record |
|
|
75
|
+
| `logger` | _(none)_ | Logger-like object with `debug`/`info`/`warn`/`error` methods |
|
|
75
76
|
|
|
76
77
|
Two control-flow variables gate whether the reporter activates at all:
|
|
77
78
|
|
|
@@ -90,6 +91,50 @@ The reporter is a no-op (i.e. does nothing, never crashes the run) unless
|
|
|
90
91
|
- `observerUrl` and `observerToken` are both resolved (from options or env).
|
|
91
92
|
The reporter logs a **warning** in this case.
|
|
92
93
|
|
|
94
|
+
## Magic comments
|
|
95
|
+
|
|
96
|
+
You can annotate individual tests (or whole `describe` blocks) with
|
|
97
|
+
`// gitlab:key=value` comments placed directly above the call:
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
// gitlab:feature_category=source_code_management
|
|
101
|
+
describe('Push branch', () => {
|
|
102
|
+
// gitlab:quarantine_issue_url=https://gitlab.com/gitlab-org/gitlab/-/issues/123
|
|
103
|
+
it.skip('handles fast-forward push', () => {
|
|
104
|
+
// ...
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The following annotations are applied automatically:
|
|
110
|
+
|
|
111
|
+
- `feature_category` overrides the default `"unknown"` on the metric record.
|
|
112
|
+
- `quarantine_issue_url` populates the matching field; the test is also
|
|
113
|
+
marked `quarantined: true` only when its status is `skipped` or `pending`.
|
|
114
|
+
A failing test in quarantine keeps `quarantined: false` — the field is
|
|
115
|
+
meant to track "currently skipped because of an open quarantine issue",
|
|
116
|
+
matching the Observer's documented schema.
|
|
117
|
+
|
|
118
|
+
Any additional annotation key (e.g. `owner`, `priority`) is forwarded
|
|
119
|
+
verbatim only when the key is listed in `extraMetadataKeys`:
|
|
120
|
+
|
|
121
|
+
```js
|
|
122
|
+
['@gitlab/jest-metrics-exporter', {
|
|
123
|
+
extraMetadataKeys: ['owner', 'priority'],
|
|
124
|
+
}]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Rules:
|
|
128
|
+
|
|
129
|
+
- Both `// gitlab:key=value` and `// gitlab:key: value` are accepted.
|
|
130
|
+
- Annotations must be **contiguous** with the test or `describe` they
|
|
131
|
+
belong to — a blank line (or any non-comment statement) between the
|
|
132
|
+
comment and the call breaks the attachment. Plain `// regular comments`
|
|
133
|
+
between the annotation and the call are tolerated and do not detach
|
|
134
|
+
it, matching the way Go's doc-comment groups work.
|
|
135
|
+
- Annotations on an enclosing `describe` propagate to nested tests; a
|
|
136
|
+
matching key on an inner block (or `customMetrics`) overrides them.
|
|
137
|
+
|
|
93
138
|
## Development
|
|
94
139
|
|
|
95
140
|
```bash
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parses `// gitlab:key=value` magic comments out of Jest spec files and
|
|
3
|
+
* resolves them per test location.
|
|
4
|
+
*
|
|
5
|
+
* The parser is line- and indent-based by design: it depends on no external
|
|
6
|
+
* AST tooling (keeping the runtime dep surface near-zero per AGENTS.md) and
|
|
7
|
+
* mirrors the behaviour of the Go formatter's `parser` package as closely
|
|
8
|
+
* as it can without a real parser.
|
|
9
|
+
*
|
|
10
|
+
* Resolution rules:
|
|
11
|
+
*
|
|
12
|
+
* - An annotation comment `// gitlab:key=value` (or `// gitlab:key: value`)
|
|
13
|
+
* attaches to the *next* `describe(`/`it(`/`test(` block, but only when
|
|
14
|
+
* the annotation comment is contiguous with that block. The upward scan
|
|
15
|
+
* walks across any number of line comments — non-`gitlab:` ones are
|
|
16
|
+
* skipped but do *not* break the attachment. Only a blank line (or any
|
|
17
|
+
* non-comment statement) detaches the annotation. This matches the
|
|
18
|
+
* Go formatter's doc-comment-group semantics.
|
|
19
|
+
* - Annotations on `describe(...)` propagate to every test inside it.
|
|
20
|
+
* - Annotations on an inner block (test or nested describe) override
|
|
21
|
+
* annotations from an outer describe with the same key.
|
|
22
|
+
*
|
|
23
|
+
/* Failures are non-fatal: a missing or unreadable file is cached as an
|
|
24
|
+
* empty `ParsedFile`, so every subsequent lookup returns `{}` without
|
|
25
|
+
* re-touching the filesystem. */
|
|
26
|
+
export declare class AnnotationResolver {
|
|
27
|
+
private readonly cache;
|
|
28
|
+
lookup(filePath: string, line: number): Record<string, string>;
|
|
29
|
+
private parse;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;iCAwBiC;AACjC,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAI9D,OAAO,CAAC,KAAK;CAcd"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AnnotationResolver = void 0;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
/**
|
|
9
|
+
* Parses `// gitlab:key=value` magic comments out of Jest spec files and
|
|
10
|
+
* resolves them per test location.
|
|
11
|
+
*
|
|
12
|
+
* The parser is line- and indent-based by design: it depends on no external
|
|
13
|
+
* AST tooling (keeping the runtime dep surface near-zero per AGENTS.md) and
|
|
14
|
+
* mirrors the behaviour of the Go formatter's `parser` package as closely
|
|
15
|
+
* as it can without a real parser.
|
|
16
|
+
*
|
|
17
|
+
* Resolution rules:
|
|
18
|
+
*
|
|
19
|
+
* - An annotation comment `// gitlab:key=value` (or `// gitlab:key: value`)
|
|
20
|
+
* attaches to the *next* `describe(`/`it(`/`test(` block, but only when
|
|
21
|
+
* the annotation comment is contiguous with that block. The upward scan
|
|
22
|
+
* walks across any number of line comments — non-`gitlab:` ones are
|
|
23
|
+
* skipped but do *not* break the attachment. Only a blank line (or any
|
|
24
|
+
* non-comment statement) detaches the annotation. This matches the
|
|
25
|
+
* Go formatter's doc-comment-group semantics.
|
|
26
|
+
* - Annotations on `describe(...)` propagate to every test inside it.
|
|
27
|
+
* - Annotations on an inner block (test or nested describe) override
|
|
28
|
+
* annotations from an outer describe with the same key.
|
|
29
|
+
*
|
|
30
|
+
/* Failures are non-fatal: a missing or unreadable file is cached as an
|
|
31
|
+
* empty `ParsedFile`, so every subsequent lookup returns `{}` without
|
|
32
|
+
* re-touching the filesystem. */
|
|
33
|
+
class AnnotationResolver {
|
|
34
|
+
cache = new Map();
|
|
35
|
+
lookup(filePath, line) {
|
|
36
|
+
return this.parse(filePath).lookup(line);
|
|
37
|
+
}
|
|
38
|
+
parse(filePath) {
|
|
39
|
+
const cached = this.cache.get(filePath);
|
|
40
|
+
if (cached)
|
|
41
|
+
return cached;
|
|
42
|
+
let parsed;
|
|
43
|
+
try {
|
|
44
|
+
parsed = parseSource(node_fs_1.default.readFileSync(filePath, 'utf8'));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Cache an empty result so unreadable files don't get hit repeatedly.
|
|
48
|
+
parsed = EMPTY_PARSED_FILE;
|
|
49
|
+
}
|
|
50
|
+
this.cache.set(filePath, parsed);
|
|
51
|
+
return parsed;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.AnnotationResolver = AnnotationResolver;
|
|
55
|
+
class ParsedFile {
|
|
56
|
+
blocks;
|
|
57
|
+
constructor(blocks) {
|
|
58
|
+
this.blocks = blocks;
|
|
59
|
+
}
|
|
60
|
+
static empty() {
|
|
61
|
+
return new ParsedFile([]);
|
|
62
|
+
}
|
|
63
|
+
lookup(line) {
|
|
64
|
+
const target = this.blocks.find((b) => b.line === line && b.kind === 'test');
|
|
65
|
+
if (!target)
|
|
66
|
+
return {};
|
|
67
|
+
// Walk preceding blocks in document order, maintaining a stack keyed by
|
|
68
|
+
// indentation. Each describe pushes a frame; deeper blocks pop frames
|
|
69
|
+
// until the stack top's indent is strictly less than the new block's.
|
|
70
|
+
const stack = [];
|
|
71
|
+
for (const b of this.blocks) {
|
|
72
|
+
if (b.line >= target.line)
|
|
73
|
+
break;
|
|
74
|
+
while (stack.length > 0) {
|
|
75
|
+
const top = stack[stack.length - 1];
|
|
76
|
+
if (top.indent < b.indent)
|
|
77
|
+
break;
|
|
78
|
+
stack.pop();
|
|
79
|
+
}
|
|
80
|
+
if (b.kind === 'describe')
|
|
81
|
+
stack.push(b);
|
|
82
|
+
}
|
|
83
|
+
// Drop describes that don't enclose the target (target.indent must be
|
|
84
|
+
// strictly greater than every enclosing describe's indent).
|
|
85
|
+
const enclosing = stack.filter((d) => d.indent < target.indent);
|
|
86
|
+
const merged = {};
|
|
87
|
+
for (const d of enclosing)
|
|
88
|
+
Object.assign(merged, d.own);
|
|
89
|
+
Object.assign(merged, target.own);
|
|
90
|
+
return merged;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const EMPTY_PARSED_FILE = ParsedFile.empty();
|
|
94
|
+
const ANNOTATION_RE = /^\s*\/\/\s*gitlab:(.+)$/;
|
|
95
|
+
const LINE_COMMENT_RE = /^\s*\/\//;
|
|
96
|
+
const BLOCK_RE = /^(\s*)(?:(describe|fdescribe|xdescribe)|(test|it|fit|xit|xtest))(?:\.[A-Za-z_]\w*)*\s*(?:<[^>]*>)?\s*\(/;
|
|
97
|
+
function parseSource(source) {
|
|
98
|
+
const lines = source.split(/\r?\n/);
|
|
99
|
+
const blocks = [];
|
|
100
|
+
for (let i = 0; i < lines.length; i++) {
|
|
101
|
+
const line = lines[i] ?? '';
|
|
102
|
+
const match = BLOCK_RE.exec(line);
|
|
103
|
+
if (!match)
|
|
104
|
+
continue;
|
|
105
|
+
const indent = (match[1] ?? '').length;
|
|
106
|
+
const kind = match[2] ? 'describe' : 'test';
|
|
107
|
+
const own = collectAnnotationsAbove(lines, i);
|
|
108
|
+
blocks.push({ line: i + 1, indent, kind, own });
|
|
109
|
+
}
|
|
110
|
+
return new ParsedFile(blocks);
|
|
111
|
+
}
|
|
112
|
+
function collectAnnotationsAbove(lines, blockIndex) {
|
|
113
|
+
const annotations = [];
|
|
114
|
+
for (let i = blockIndex - 1; i >= 0; i--) {
|
|
115
|
+
const line = lines[i] ?? '';
|
|
116
|
+
if (!LINE_COMMENT_RE.test(line))
|
|
117
|
+
break;
|
|
118
|
+
const m = ANNOTATION_RE.exec(line);
|
|
119
|
+
if (!m)
|
|
120
|
+
continue;
|
|
121
|
+
const kv = splitKV(m[1] ?? '');
|
|
122
|
+
if (kv)
|
|
123
|
+
annotations.push(kv);
|
|
124
|
+
}
|
|
125
|
+
// We walked upward, so reverse to keep source order (lower line wins on
|
|
126
|
+
// duplicate keys, matching the file's reading order).
|
|
127
|
+
annotations.reverse();
|
|
128
|
+
const out = {};
|
|
129
|
+
for (const [k, v] of annotations)
|
|
130
|
+
out[k] = v;
|
|
131
|
+
return out;
|
|
132
|
+
}
|
|
133
|
+
function splitKV(rest) {
|
|
134
|
+
// Accept both `key=value` and `key: value`. First separator wins.
|
|
135
|
+
const trimmed = rest.trim();
|
|
136
|
+
const match = /^([^=:]+?)\s*[=:]\s*(.*)$/.exec(trimmed);
|
|
137
|
+
if (!match)
|
|
138
|
+
return undefined;
|
|
139
|
+
const key = (match[1] ?? '').trim();
|
|
140
|
+
const value = (match[2] ?? '').trim();
|
|
141
|
+
if (!key)
|
|
142
|
+
return undefined;
|
|
143
|
+
return [key, value];
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAyB;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;iCAwBiC;AACjC,MAAa,kBAAkB;IACZ,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,MAAM,CAAC,QAAgB,EAAE,IAAY;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,QAAgB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,WAAW,CAAC,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,MAAM,GAAG,iBAAiB,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AArBD,gDAqBC;AASD,MAAM,UAAU;IACe;IAA7B,YAA6B,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEhD,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,wEAAwE;QACxE,sEAAsE;QACtE,sEAAsE;QACtE,MAAM,KAAK,GAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;gBAAE,MAAM;YACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAU,CAAC;gBAC7C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;oBAAE,MAAM;gBACjC,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhE,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;AAE7C,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAChD,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,QAAQ,GACZ,yGAAyG,CAAC;AAE5G,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvC,MAAM,IAAI,GAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAe,EAAE,UAAkB;IAClE,MAAM,WAAW,GAA4B,EAAE,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM;QACvC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE;YAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,wEAAwE;IACxE,sDAAsD;IACtD,WAAW,CAAC,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,kEAAkE;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMvE,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAMvE,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAE9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAiBtE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAmB1E"}
|
package/dist/config.js
CHANGED
|
@@ -10,6 +10,7 @@ exports.LOG_PREFIX = '[MetricsExporter]';
|
|
|
10
10
|
function resolveConfig(options) {
|
|
11
11
|
return {
|
|
12
12
|
runType: options.runType ?? '',
|
|
13
|
+
testLevel: options.testLevel ?? process.env.GLCI_TEST_METRICS_TEST_LEVEL ?? '',
|
|
13
14
|
observerUrl: options.observerUrl ?? process.env.GLCI_OBSERVER_URL ?? '',
|
|
14
15
|
observerToken: options.observerToken ?? process.env.GLCI_OBSERVER_AUTH_TOKEN ?? '',
|
|
15
16
|
specFilePathPrefix: options.specFilePathPrefix ?? '',
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAQA,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAQA,sCAiBC;AAYD,8CAmBC;AAtDD,MAAM,mBAAmB,GAAG,GAAY,EAAE,CAAC,KAAK,CAAC;AACjD,MAAM,oBAAoB,GAAG,GAAY,EAAE,CAAC,KAAK,CAAC;AAClD,MAAM,sBAAsB,GAAG,GAA4B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAEtD,QAAA,UAAU,GAAG,mBAAmB,CAAC;AAE9C,SAAgB,aAAa,CAAC,OAAwB;IACpD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,EAAE;QAC9E,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACvE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;QAClF,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,EAAE;QACpD,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;QAC5F,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB;QAC/F,WAAW,EACT,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB;QACxF,aAAa,EACX,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU;YACzC,CAAC,CAAC,OAAO,CAAC,aAAa;YACvB,CAAC,CAAC,sBAAsB;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE;KAC1C,CAAC;AACJ,CAAC;AAMD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAsB;IACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEhF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,GAAG,kBAAU,sHAAsH,CACpI,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAChB,GAAG,kBAAU,sIAAsI,CACpJ,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;QACL,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9C,IAAI,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9C,KAAK,EAAE,CAAC,GAAW,EAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;KACjD,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ declare namespace JestMetricsReporter {
|
|
|
11
11
|
type SkipRecordFn = SkipRecordFnImpl;
|
|
12
12
|
type TestRetriedFn = TestRetriedFnImpl;
|
|
13
13
|
type CustomMetricsFn = CustomMetricsFnImpl;
|
|
14
|
-
const VERSION: "0.
|
|
14
|
+
const VERSION: "0.2.0";
|
|
15
15
|
}
|
|
16
16
|
export = JestMetricsReporter;
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/metric.d.ts
CHANGED
|
@@ -9,5 +9,5 @@ import type { MetricRecord, ResolvedConfig } from './types';
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function computeTimestamp(): string;
|
|
11
11
|
export declare function buildMetricsFromAggregate(aggregated: Pick<AggregatedResult, 'testResults'>, config: ResolvedConfig, timestamp: string): MetricRecord[];
|
|
12
|
-
export declare function buildMetric(testCase: AssertionResult, testFilePath: string, timestamp: string, config: ResolvedConfig): MetricRecord;
|
|
12
|
+
export declare function buildMetric(testCase: AssertionResult, testFilePath: string, timestamp: string, config: ResolvedConfig, annotations?: Record<string, string>): MetricRecord;
|
|
13
13
|
//# sourceMappingURL=metric.d.ts.map
|
package/dist/metric.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../src/metric.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"metric.d.ts","sourceRoot":"","sources":["../src/metric.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAc,MAAM,mBAAmB,CAAC;AAIvF,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAiB5D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,EACjD,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GAChB,YAAY,EAAE,CAYhB;AAYD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,eAAe,EACzB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACvC,YAAY,CA2Cd"}
|
package/dist/metric.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.buildMetricsFromAggregate = buildMetricsFromAggregate;
|
|
|
8
8
|
exports.buildMetric = buildMetric;
|
|
9
9
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const annotations_1 = require("./annotations");
|
|
11
12
|
const env_1 = require("./env");
|
|
12
13
|
const pipeline_1 = require("./pipeline");
|
|
13
14
|
const JEST_PARALLEL_SUFFIX = / \d{1,2}\/\d{1,2}$/;
|
|
@@ -37,16 +38,25 @@ function computeTimestamp() {
|
|
|
37
38
|
}
|
|
38
39
|
function buildMetricsFromAggregate(aggregated, config, timestamp) {
|
|
39
40
|
const records = [];
|
|
41
|
+
const resolver = new annotations_1.AnnotationResolver();
|
|
40
42
|
for (const fileResult of aggregated.testResults) {
|
|
43
|
+
const filePath = testFilePathOf(fileResult);
|
|
41
44
|
for (const testCase of fileResult.testResults) {
|
|
42
45
|
if (config.skipRecord(testCase))
|
|
43
46
|
continue;
|
|
44
|
-
|
|
47
|
+
const annotations = annotationsFor(resolver, filePath, testCase);
|
|
48
|
+
records.push(buildMetric(testCase, filePath, timestamp, config, annotations));
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
return records;
|
|
48
52
|
}
|
|
49
|
-
function
|
|
53
|
+
function annotationsFor(resolver, filePath, testCase) {
|
|
54
|
+
const line = testCase.location?.line;
|
|
55
|
+
if (typeof line !== 'number')
|
|
56
|
+
return {};
|
|
57
|
+
return resolver.lookup(filePath, line);
|
|
58
|
+
}
|
|
59
|
+
function buildMetric(testCase, testFilePath, timestamp, config, annotations = {}) {
|
|
50
60
|
const filePath = relativeFilePath(testFilePath);
|
|
51
61
|
const name = testCase.fullName || testCase.title || '';
|
|
52
62
|
const hash = node_crypto_1.default
|
|
@@ -59,13 +69,14 @@ function buildMetric(testCase, testFilePath, timestamp, config) {
|
|
|
59
69
|
const hasFailure = exceptionClasses.length > 0 || failureMessages.length > 0;
|
|
60
70
|
const failureException = hasFailure ? formatFailureMessage(failureMessages) : undefined;
|
|
61
71
|
const exceptionClass = exceptionClasses[0];
|
|
72
|
+
const status = STATUS_MAP[testCase.status] ?? testCase.status;
|
|
62
73
|
const record = {
|
|
63
74
|
timestamp,
|
|
64
75
|
id: `${filePath}:${name}`,
|
|
65
76
|
name,
|
|
66
77
|
hash,
|
|
67
78
|
file_path: filePath,
|
|
68
|
-
status
|
|
79
|
+
status,
|
|
69
80
|
run_time: normalizeDuration(testCase.duration),
|
|
70
81
|
location: locationFor(filePath, testCase.location ?? null),
|
|
71
82
|
exception_class: exceptionClass,
|
|
@@ -76,13 +87,34 @@ function buildMetric(testCase, testFilePath, timestamp, config) {
|
|
|
76
87
|
feature_category: 'unknown',
|
|
77
88
|
test_retried: Boolean(config.testRetried(testCase)),
|
|
78
89
|
run_type: resolveRunType(config),
|
|
90
|
+
test_level: config.testLevel || undefined,
|
|
79
91
|
spec_file_path_prefix: config.specFilePathPrefix,
|
|
80
92
|
pipeline_type: (0, pipeline_1.detectPipelineType)(),
|
|
81
93
|
...ciFields(),
|
|
94
|
+
...annotationFields(annotations, config, status),
|
|
82
95
|
...coerceCustomMetrics(config.customMetrics(testCase)),
|
|
83
96
|
};
|
|
84
97
|
return dropNullish(record);
|
|
85
98
|
}
|
|
99
|
+
function annotationFields(annotations, config, status) {
|
|
100
|
+
const out = {};
|
|
101
|
+
const featureCategory = annotations.feature_category;
|
|
102
|
+
if (featureCategory)
|
|
103
|
+
out.feature_category = featureCategory;
|
|
104
|
+
const quarantineUrl = annotations.quarantine_issue_url;
|
|
105
|
+
if (quarantineUrl) {
|
|
106
|
+
out.quarantine_issue_url = quarantineUrl;
|
|
107
|
+
if (status === 'skipped' || status === 'pending') {
|
|
108
|
+
out.quarantined = true;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
for (const key of config.extraMetadataKeys) {
|
|
112
|
+
if (Object.prototype.hasOwnProperty.call(annotations, key)) {
|
|
113
|
+
out[key] = annotations[key];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return out;
|
|
117
|
+
}
|
|
86
118
|
function testFilePathOf(result) {
|
|
87
119
|
// `testFilePath` is the canonical field in Jest 27+; fall back if absent.
|
|
88
120
|
return result.testFilePath;
|
|
@@ -159,6 +191,8 @@ function resolveRunType(config) {
|
|
|
159
191
|
const envRunType = env('GLCI_TEST_METRICS_RUN_TYPE');
|
|
160
192
|
if (envRunType)
|
|
161
193
|
return envRunType;
|
|
194
|
+
if (config.testLevel.length > 0)
|
|
195
|
+
return config.testLevel;
|
|
162
196
|
const jobName = sanitizeJobName(env('CI_JOB_NAME'));
|
|
163
197
|
if (jobName)
|
|
164
198
|
return jobName;
|
package/dist/metric.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../src/metric.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"metric.js","sourceRoot":"","sources":["../src/metric.ts"],"names":[],"mappings":"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"}
|
package/dist/reporter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5E,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvE,qBAAa,mBAAoB,YAAW,QAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,GAAE,eAAoB;
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5E,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvE,qBAAa,mBAAoB,YAAW,QAAQ;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;gBAEhC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,GAAE,eAAoB;IAyBrF,UAAU,CACR,kBAAkB,EAAE,gBAAgB,EACpC,QAAQ,EAAE,sBAAsB,GAC/B,IAAI;IAIP,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAI9B,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,GAAG,IAAI;IAIxF,aAAa,CACjB,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,EAC/B,iBAAiB,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC;IAiChB,YAAY,IAAI,KAAK,GAAG,SAAS;IAKjC,gBAAgB;IAChB,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,gBAAgB;IAChB,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gBAAgB;IAChB,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF;AAOD,eAAe,mBAAmB,CAAC"}
|
package/dist/reporter.js
CHANGED
|
@@ -30,14 +30,9 @@ class JestMetricsReporter {
|
|
|
30
30
|
this.client = client;
|
|
31
31
|
}
|
|
32
32
|
// Required by Jest's Reporter interface. We do all the work in onRunComplete,
|
|
33
|
-
// so these are intentional no-ops kept around for type compatibility
|
|
34
|
-
// emit a one-time diagnostic about the no-op `extraMetadataKeys` option.
|
|
33
|
+
// so these are intentional no-ops kept around for type compatibility.
|
|
35
34
|
onRunStart(_aggregatedResults, _options) {
|
|
36
|
-
|
|
37
|
-
return;
|
|
38
|
-
if (this.config.extraMetadataKeys.length > 0) {
|
|
39
|
-
this.config.logger.debug(`${config_1.LOG_PREFIX} extraMetadataKeys is a no-op until per-test metadata tagging is implemented`);
|
|
40
|
-
}
|
|
35
|
+
/* no-op */
|
|
41
36
|
}
|
|
42
37
|
onTestStart(_test) {
|
|
43
38
|
/* no-op */
|
package/dist/reporter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":";;;AAEA,qCAAkC;AAClC,qCAAwE;AACxE,qCAAuE;AAGvE,MAAa,mBAAmB;IACb,MAAM,CAAiB;IACvB,QAAQ,CAAU;IAClB,MAAM,CAAqB;IAE5C,YAAY,aAAkC,EAAE,kBAAmC,EAAE;QACnF,IAAI,QAAwB,CAAC;QAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,MAA0B,CAAC;QAE/B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAA,sBAAa,EAAC,eAAe,CAAC,CAAC;YAC1C,QAAQ,GAAG,IAAA,0BAAiB,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;YAChD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,GAAG,IAAA,sBAAa,EAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;YACzD,MAAM,CAAC,KAAK,CAAC,GAAG,mBAAU,oCAAoC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,8EAA8E;IAC9E,
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type TestRetriedFn = (testCase: AssertionResult) => boolean;
|
|
|
10
10
|
export type CustomMetricsFn = (testCase: AssertionResult) => Record<string, unknown>;
|
|
11
11
|
export interface ReporterOptions {
|
|
12
12
|
runType?: string;
|
|
13
|
+
testLevel?: string;
|
|
13
14
|
observerUrl?: string;
|
|
14
15
|
observerToken?: string;
|
|
15
16
|
specFilePathPrefix?: string;
|
|
@@ -21,6 +22,7 @@ export interface ReporterOptions {
|
|
|
21
22
|
}
|
|
22
23
|
export interface ResolvedConfig {
|
|
23
24
|
runType: string;
|
|
25
|
+
testLevel: string;
|
|
24
26
|
observerUrl: string;
|
|
25
27
|
observerToken: string;
|
|
26
28
|
specFilePathPrefix: string;
|
|
@@ -48,6 +50,7 @@ export interface MetricRecord {
|
|
|
48
50
|
feature_category: string;
|
|
49
51
|
test_retried: boolean;
|
|
50
52
|
run_type: string;
|
|
53
|
+
test_level?: string;
|
|
51
54
|
spec_file_path_prefix: string;
|
|
52
55
|
pipeline_type: string;
|
|
53
56
|
ci_project_id?: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC;AACnE,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,CAAC;IACzB,WAAW,EAAE,aAAa,CAAC;IAC3B,aAAa,EAAE,eAAe,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION: "0.
|
|
1
|
+
export declare const VERSION: "0.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gitlab/jest-metrics-exporter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "A Jest reporter that collects test execution data and pushes it to the GitLab Observer service",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
],
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
|
+
"directory": "jest",
|
|
14
15
|
"url": "https://gitlab.com/gitlab-org/quality/analytics/test-metrics-exporters"
|
|
15
16
|
},
|
|
16
17
|
"homepage": "https://gitlab.com/gitlab-org/quality/analytics/test-metrics-exporters",
|