testaro 8.4.7 → 9.0.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.
Files changed (45) hide show
  1. package/README.md +94 -155
  2. package/{commands.js → actSpecs.js} +1 -1
  3. package/call.js +35 -13
  4. package/package.json +2 -3
  5. package/run.js +155 -181
  6. package/samples/00000-ts18-example.json +3 -3
  7. package/validation/executors/run.js +40 -0
  8. package/validation/executors/watchDir.js +7 -6
  9. package/validation/executors/watchNet.js +5 -6
  10. package/validation/jobs/done/README.md +3 -0
  11. package/validation/jobs/{00000-simple-example.json → todo/00000-simple-example.json} +6 -7
  12. package/validation/jobs/{README.md → todo/README.md} +0 -0
  13. package/validation/tests/jobs/allHidden.json +3 -2
  14. package/validation/tests/jobs/bulk.json +3 -2
  15. package/validation/tests/jobs/docType.json +3 -2
  16. package/validation/tests/jobs/elements.json +3 -2
  17. package/validation/tests/jobs/embAc.json +3 -2
  18. package/validation/tests/jobs/filter.json +3 -2
  19. package/validation/tests/jobs/focAll.json +3 -2
  20. package/validation/tests/jobs/focInd.json +3 -2
  21. package/validation/tests/jobs/focOp.json +3 -2
  22. package/validation/tests/jobs/focVis.json +3 -2
  23. package/validation/tests/jobs/hover.json +3 -2
  24. package/validation/tests/jobs/labClash.json +3 -2
  25. package/validation/tests/jobs/linkTo.json +3 -2
  26. package/validation/tests/jobs/linkUl.json +3 -2
  27. package/validation/tests/jobs/menuNav.json +3 -2
  28. package/validation/tests/jobs/miniText.json +3 -2
  29. package/validation/tests/jobs/motion.json +3 -2
  30. package/validation/tests/jobs/nonTable.json +3 -2
  31. package/validation/tests/jobs/radioSet.json +3 -2
  32. package/validation/tests/jobs/role.json +3 -2
  33. package/validation/tests/jobs/styleDiff.json +3 -2
  34. package/validation/tests/jobs/tabNav.json +3 -2
  35. package/validation/tests/jobs/textNodes.json +3 -2
  36. package/validation/tests/jobs/title.json +3 -2
  37. package/validation/tests/jobs/titledEl.json +3 -2
  38. package/validation/tests/jobs/zIndex.json +3 -2
  39. package/validation/validateTest.js +3 -8
  40. package/validation/watch/{README.md → done/README.md} +0 -0
  41. package/validation/watch/todo/README.md +3 -0
  42. package/watch.js +39 -49
  43. package/high.js +0 -60
  44. package/validation/executors/high.js +0 -52
  45. package/validation/executors/low.js +0 -53
@@ -0,0 +1,40 @@
1
+ // run.js
2
+ // Validator for immediate job execution.
3
+
4
+ // ########## IMPORTS
5
+
6
+ const fs = require('fs/promises');
7
+
8
+ // ########## CONSTANTS
9
+
10
+ const {doJob} = require('../../run');
11
+ const jobID = '00000-simple-example';
12
+
13
+ // ########## OPERATION
14
+
15
+ // Get the simple job.
16
+ fs.readFile(`${__dirname}/../jobs/todo/${jobID}.json`, 'utf8')
17
+ .then(async jobJSON => {
18
+ const report = JSON.parse(jobJSON);
19
+ // Run it.
20
+ await doJob(report);
21
+ try {
22
+ // Check the report against expectations.
23
+ const {acts, jobData} = report;
24
+ if (acts.length !== 3) {
25
+ console.log('Failure: Counts of acts is not 3');
26
+ }
27
+ else if (! jobData) {
28
+ console.log('Failure: Report omits jobData');
29
+ }
30
+ else if (jobData.endTime < jobData.startTime) {
31
+ console.log('Failure: End time precedes start time');
32
+ }
33
+ else {
34
+ console.log('Success');
35
+ }
36
+ }
37
+ catch(error) {
38
+ console.log(`ERROR: ${error.message}`);
39
+ }
40
+ });
@@ -10,18 +10,19 @@ const fs = require('fs/promises');
10
10
  // Override cycle environment variables with validation-specific ones.
11
11
  process.env.PROTOCOL = 'http';
12
12
  process.env.JOBDIR = `${__dirname}/../watch`;
13
- process.env.DONEDIR = `${__dirname}/../done`;
14
13
  process.env.REPORTDIR = `${__dirname}/../../temp`;
15
14
  const jobID = '00000-simple-example';
16
- const {cycle} = require(`${__dirname}/../../watch`);
15
+ const {cycle} = require('../../watch');
17
16
 
18
17
  // Start checking for jobs every 5 seconds.
19
18
  cycle(true, false, 5)
20
19
  .then(() => {
21
- console.log('Watch validation ended');
20
+ console.log('Success: Watch validation ended');
22
21
  });
23
- // Copy a job into JOBDIR after 7 seconds.
22
+ // Make a job available after 7 seconds.
24
23
  setTimeout(() => {
25
- fs.copyFile(`${__dirname}/../jobs/${jobID}.json`, `${process.env.JOBDIR}/${jobID}.json`);
26
- console.log('Job copied into watched-job directory after 7 seconds');
24
+ fs.copyFile(
25
+ `${__dirname}/../jobs/todo/${jobID}.json`, `${process.env.JOBDIR}/todo/${jobID}.json`
26
+ );
27
+ console.log('Job made available after 7 seconds');
27
28
  }, 7000);
@@ -9,11 +9,11 @@ const fs = require('fs/promises');
9
9
 
10
10
  // Override cycle environment variables with validation-specific ones.
11
11
  process.env.PROTOCOL = 'http';
12
- const jobDir = `${__dirname}/../jobs`;
12
+ const jobDir = `${__dirname}/../jobs/todo`;
13
13
  process.env.JOB_URL = 'localhost:3007/api/job';
14
14
  process.env.REPORT_URL = 'localhost:3007/api';
15
15
  process.env.AGENT = 'testarauth';
16
- const {cycle} = require(`${__dirname}/../../watch`);
16
+ const {cycle} = require('../../watch');
17
17
  const client = require(process.env.PROTOCOL);
18
18
  const jobID = '00000-simple-example';
19
19
 
@@ -81,11 +81,10 @@ const requestHandler = (request, response) => {
81
81
  const bodyJSON = bodyParts.join('');
82
82
  const body = JSON.parse(bodyJSON);
83
83
  if (
84
- body.job
85
- && body.acts
84
+ body.acts
86
85
  && body.jobData
87
- && body.agent
88
- && body.agent === process.env.AGENT
86
+ && body.jobData.agent
87
+ && body.jobData.agent === process.env.AGENT
89
88
  ) {
90
89
  ack.result = 'Success: Valid report submitted';
91
90
  }
@@ -0,0 +1,3 @@
1
+ # jobs
2
+
3
+ Directory containing validated jobs.
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "id": "00000-simple-example",
3
- "what": "Test example.com with bulk",
3
+ "what": "Test example.edu with bulk",
4
4
  "strict": true,
5
5
  "timeLimit": 10,
6
- "commands": [
6
+ "acts": [
7
7
  {
8
8
  "type": "launch",
9
9
  "which": "chromium",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  {
13
13
  "type": "url",
14
- "which": "https://example.com/",
14
+ "which": "https://example.edu/",
15
15
  "what": "Example.com",
16
16
  "id": "example"
17
17
  },
@@ -24,13 +24,12 @@
24
24
  "sources": {
25
25
  "script": "simple",
26
26
  "batch": "",
27
- "host": {
27
+ "target": {
28
28
  "id": "example",
29
- "which": "https://example.com",
30
- "what": "Example.com"
29
+ "what": "Example"
31
30
  },
32
31
  "requester": "user@domain.tld"
33
32
  },
34
- "jobCreationTime": "2022-11-12T22:51:45",
33
+ "creationTime": "2022-11-12T22:51:45",
35
34
  "timeStamp": "00000"
36
35
  }
File without changes
@@ -2,7 +2,8 @@
2
2
  "id": "allHiddenVal",
3
3
  "what": "validation of allHidden test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -308,6 +309,6 @@
308
309
  "host": {},
309
310
  "requester": ""
310
311
  },
311
- "jobCreationTime": "2002-11-12T09:31:00",
312
+ "creationTime": "2002-11-12T09:31:00",
312
313
  "timeStamp": "00000"
313
314
  }
@@ -2,7 +2,8 @@
2
2
  "id": "bulkVal",
3
3
  "what": "validation of bulk test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -42,6 +43,6 @@
42
43
  "host": {},
43
44
  "requester": ""
44
45
  },
45
- "jobCreationTime": "2002-11-12T09:31:00",
46
+ "creationTime": "2002-11-12T09:31:00",
46
47
  "timeStamp": "00000"
47
48
  }
@@ -2,7 +2,8 @@
2
2
  "id": "docTypeVal",
3
3
  "what": "validation of docType test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -40,6 +41,6 @@
40
41
  "host": {},
41
42
  "requester": ""
42
43
  },
43
- "jobCreationTime": "2002-11-12T09:31:00",
44
+ "creationTime": "2002-11-12T09:31:00",
44
45
  "timeStamp": "00000"
45
46
  }
@@ -2,7 +2,8 @@
2
2
  "id": "elementsVal",
3
3
  "what": "validation of elements test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -134,6 +135,6 @@
134
135
  "host": {},
135
136
  "requester": ""
136
137
  },
137
- "jobCreationTime": "2002-11-12T09:31:00",
138
+ "creationTime": "2002-11-12T09:31:00",
138
139
  "timeStamp": "00000"
139
140
  }
@@ -2,7 +2,8 @@
2
2
  "id": "embAcVal",
3
3
  "what": "validation of embAc test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -48,6 +49,6 @@
48
49
  "host": {},
49
50
  "requester": ""
50
51
  },
51
- "jobCreationTime": "2002-11-12T09:31:00",
52
+ "creationTime": "2002-11-12T09:31:00",
52
53
  "timeStamp": "00000"
53
54
  }
@@ -2,7 +2,8 @@
2
2
  "id": "filterVal",
3
3
  "what": "validation of filter test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -49,6 +50,6 @@
49
50
  "host": {},
50
51
  "requester": ""
51
52
  },
52
- "jobCreationTime": "2002-11-12T09:31:00",
53
+ "creationTime": "2002-11-12T09:31:00",
53
54
  "timeStamp": "00000"
54
55
  }
@@ -2,7 +2,8 @@
2
2
  "id": "focAllVal",
3
3
  "what": "validation of focAll test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -62,6 +63,6 @@
62
63
  "host": {},
63
64
  "requester": ""
64
65
  },
65
- "jobCreationTime": "2002-11-12T09:31:00",
66
+ "creationTime": "2002-11-12T09:31:00",
66
67
  "timeStamp": "00000"
67
68
  }
@@ -2,7 +2,8 @@
2
2
  "id": "focIndVal",
3
3
  "what": "validation of focInd test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -63,6 +64,6 @@
63
64
  "host": {},
64
65
  "requester": ""
65
66
  },
66
- "jobCreationTime": "2002-11-12T09:31:00",
67
+ "creationTime": "2002-11-12T09:31:00",
67
68
  "timeStamp": "00000"
68
69
  }
@@ -2,7 +2,8 @@
2
2
  "id": "focOpVal",
3
3
  "what": "validation of focOp test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -56,6 +57,6 @@
56
57
  "host": {},
57
58
  "requester": ""
58
59
  },
59
- "jobCreationTime": "2002-11-12T09:31:00",
60
+ "creationTime": "2002-11-12T09:31:00",
60
61
  "timeStamp": "00000"
61
62
  }
@@ -2,7 +2,8 @@
2
2
  "id": "focVisVal",
3
3
  "what": "validation of focVis test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -29,6 +30,6 @@
29
30
  "host": {},
30
31
  "requester": ""
31
32
  },
32
- "jobCreationTime": "2002-11-12T09:31:00",
33
+ "creationTime": "2002-11-12T09:31:00",
33
34
  "timeStamp": "00000"
34
35
  }
@@ -2,7 +2,8 @@
2
2
  "id": "hoverVal",
3
3
  "what": "validation of hover test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -112,6 +113,6 @@
112
113
  "host": {},
113
114
  "requester": ""
114
115
  },
115
- "jobCreationTime": "2002-11-12T09:31:00",
116
+ "creationTime": "2002-11-12T09:31:00",
116
117
  "timeStamp": "00000"
117
118
  }
@@ -2,7 +2,8 @@
2
2
  "id": "labClashVal",
3
3
  "what": "validation of labClash test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -46,6 +47,6 @@
46
47
  "host": {},
47
48
  "requester": ""
48
49
  },
49
- "jobCreationTime": "2002-11-12T09:31:00",
50
+ "creationTime": "2002-11-12T09:31:00",
50
51
  "timeStamp": "00000"
51
52
  }
@@ -2,7 +2,8 @@
2
2
  "id": "linkToVal",
3
3
  "what": "validation of linkTo test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -29,6 +30,6 @@
29
30
  "host": {},
30
31
  "requester": ""
31
32
  },
32
- "jobCreationTime": "2002-11-12T09:31:00",
33
+ "creationTime": "2002-11-12T09:31:00",
33
34
  "timeStamp": "00000"
34
35
  }
@@ -2,7 +2,8 @@
2
2
  "id": "linkUlVal",
3
3
  "what": "validation of linkUl test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -65,6 +66,6 @@
65
66
  "host": {},
66
67
  "requester": ""
67
68
  },
68
- "jobCreationTime": "2002-11-12T09:31:00",
69
+ "creationTime": "2002-11-12T09:31:00",
69
70
  "timeStamp": "00000"
70
71
  }
@@ -2,7 +2,8 @@
2
2
  "id": "menuNavVal",
3
3
  "what": "validation of menuNav test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -100,6 +101,6 @@
100
101
  "host": {},
101
102
  "requester": ""
102
103
  },
103
- "jobCreationTime": "2002-11-12T09:31:00",
104
+ "creationTime": "2002-11-12T09:31:00",
104
105
  "timeStamp": "00000"
105
106
  }
@@ -2,7 +2,8 @@
2
2
  "id": "miniTextVal",
3
3
  "what": "validation of miniText test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -30,6 +31,6 @@
30
31
  "host": {},
31
32
  "requester": ""
32
33
  },
33
- "jobCreationTime": "2002-11-12T09:31:00",
34
+ "creationTime": "2002-11-12T09:31:00",
34
35
  "timeStamp": "00000"
35
36
  }
@@ -2,7 +2,8 @@
2
2
  "id": "motionVal",
3
3
  "what": "validation of motion test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "webkit",
@@ -56,6 +57,6 @@
56
57
  "host": {},
57
58
  "requester": ""
58
59
  },
59
- "jobCreationTime": "2002-11-12T09:31:00",
60
+ "creationTime": "2002-11-12T09:31:00",
60
61
  "timeStamp": "00000"
61
62
  }
@@ -2,7 +2,8 @@
2
2
  "id": "nonTableVal",
3
3
  "what": "validation of nonTable test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -31,6 +32,6 @@
31
32
  "host": {},
32
33
  "requester": ""
33
34
  },
34
- "jobCreationTime": "2002-11-12T09:31:00",
35
+ "creationTime": "2002-11-12T09:31:00",
35
36
  "timeStamp": "00000"
36
37
  }
@@ -2,7 +2,8 @@
2
2
  "id": "radioSetVal",
3
3
  "what": "validation of radioSet test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -46,6 +47,6 @@
46
47
  "host": {},
47
48
  "requester": ""
48
49
  },
49
- "jobCreationTime": "2002-11-12T09:31:00",
50
+ "creationTime": "2002-11-12T09:31:00",
50
51
  "timeStamp": "00000"
51
52
  }
@@ -2,7 +2,8 @@
2
2
  "id": "roleVal",
3
3
  "what": "validation of role test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -54,6 +55,6 @@
54
55
  "host": {},
55
56
  "requester": ""
56
57
  },
57
- "jobCreationTime": "2002-11-12T09:31:00",
58
+ "creationTime": "2002-11-12T09:31:00",
58
59
  "timeStamp": "00000"
59
60
  }
@@ -2,7 +2,8 @@
2
2
  "id": "styleDiffVal",
3
3
  "what": "validation of styleDiff test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -65,6 +66,6 @@
65
66
  "host": {},
66
67
  "requester": ""
67
68
  },
68
- "jobCreationTime": "2002-11-12T09:31:00",
69
+ "creationTime": "2002-11-12T09:31:00",
69
70
  "timeStamp": "00000"
70
71
  }
@@ -2,7 +2,8 @@
2
2
  "id": "tabNavVal",
3
3
  "what": "validation of tabNav test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -100,6 +101,6 @@
100
101
  "host": {},
101
102
  "requester": ""
102
103
  },
103
- "jobCreationTime": "2002-11-12T09:31:00",
104
+ "creationTime": "2002-11-12T09:31:00",
104
105
  "timeStamp": "00000"
105
106
  }
@@ -2,7 +2,8 @@
2
2
  "id": "elementsVal",
3
3
  "what": "validation of elements test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -92,6 +93,6 @@
92
93
  "host": {},
93
94
  "requester": ""
94
95
  },
95
- "jobCreationTime": "2002-11-12T09:31:00",
96
+ "creationTime": "2002-11-12T09:31:00",
96
97
  "timeStamp": "00000"
97
98
  }
@@ -2,7 +2,8 @@
2
2
  "id": "titleVal",
3
3
  "what": "validation of title test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -40,6 +41,6 @@
40
41
  "host": {},
41
42
  "requester": ""
42
43
  },
43
- "jobCreationTime": "2002-11-12T09:31:00",
44
+ "creationTime": "2002-11-12T09:31:00",
44
45
  "timeStamp": "00000"
45
46
  }
@@ -2,7 +2,8 @@
2
2
  "id": "titledElVal",
3
3
  "what": "validation of titledEl test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -31,6 +32,6 @@
31
32
  "host": {},
32
33
  "requester": ""
33
34
  },
34
- "jobCreationTime": "2002-11-12T09:31:00",
35
+ "creationTime": "2002-11-12T09:31:00",
35
36
  "timeStamp": "00000"
36
37
  }
@@ -2,7 +2,8 @@
2
2
  "id": "zIndexVal",
3
3
  "what": "validation of zIndex test",
4
4
  "strict": true,
5
- "commands": [
5
+ "timeLimit": 20,
6
+ "acts": [
6
7
  {
7
8
  "type": "launch",
8
9
  "which": "chromium",
@@ -43,6 +44,6 @@
43
44
  "host": {},
44
45
  "requester": ""
45
46
  },
46
- "jobCreationTime": "2002-11-12T09:31:00",
47
+ "creationTime": "2002-11-12T09:31:00",
47
48
  "timeStamp": "00000"
48
49
  }
@@ -2,18 +2,13 @@
2
2
  // Validator for one Testaro test.
3
3
 
4
4
  const fs = require('fs').promises;
5
- const {doJob} = require(`${__dirname}/../run`);
5
+ const {doJob} = require('../run');
6
6
  exports.validateTest = async testID => {
7
7
  const jobFileNames = await fs.readdir(`${__dirname}/tests/jobs`);
8
8
  for (const jobFileName of jobFileNames.filter(fileName => fileName === `${testID}.json`)) {
9
9
  const rawJobJSON = await fs.readFile(`${__dirname}/tests/jobs/${jobFileName}`, 'utf8');
10
10
  const jobJSON = rawJobJSON.replace(/__targets__/g, 'file://validation/tests/targets');
11
- const job = JSON.parse(jobJSON);
12
- const report = {
13
- job,
14
- acts: [],
15
- jobData: {}
16
- };
11
+ const report = JSON.parse(jobJSON);
17
12
  await doJob(report);
18
13
  const {acts, jobData} = report;
19
14
  if (jobData.endTime && /^\d{4}-.+$/.test(jobData.endTime)) {
@@ -24,7 +19,7 @@ exports.validateTest = async testID => {
24
19
  }
25
20
  const testActs = acts.filter(act => act.type && act.type === 'test');
26
21
  if (
27
- testActs.length === job.commands.filter(cmd => cmd.type === 'test').length
22
+ testActs.length === report.acts.filter(act => act.type === 'test').length
28
23
  && testActs.every(testAct => testAct.result && testAct.result.failureCount !== undefined)
29
24
  ) {
30
25
  console.log('Success: Reports have been correctly populated');
File without changes