testaro 2.3.3 → 2.3.4

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 (3) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
  3. package/tests/alfa.js +82 -80
package/index.js CHANGED
@@ -454,7 +454,7 @@ const goto = async (page, url, timeout, waitUntil, isStrict) => {
454
454
  return 'error';
455
455
  });
456
456
  if (typeof response !== 'string') {
457
- const httpStatus = response.statusCode;
457
+ const httpStatus = response.status();
458
458
  if ([200, 304].includes(httpStatus) || url.startsWith('file:')) {
459
459
  const actualURL = page.url();
460
460
  if (isStrict && deSlash(actualURL) !== deSlash(url)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testaro",
3
- "version": "2.3.3",
3
+ "version": "2.3.4",
4
4
  "description": "Automation of accessibility testing",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tests/alfa.js CHANGED
@@ -18,90 +18,92 @@ exports.reporter = async page => {
18
18
  const msgText = msg.text();
19
19
  console.log(msgText);
20
20
  });
21
- const response = await rulePage.goto('https://alfa.siteimprove.com/rules', {timeout: 10000})
22
- .catch(error => {
23
- console.log(`ERROR: navigation to URL timed out (${error})`);
24
- return {result: {error: 'ERROR: navigation to URL timed out'}};
25
- });
26
- let ruleData = {};
27
- if (response.statusCode === 200) {
28
- // Compile data on the rule IDs and summaries.
29
- ruleData = await rulePage.evaluate(() => {
30
- const rulePs = Array.from(document.querySelectorAll('p.h5'));
31
- const ruleData = {};
32
- rulePs.forEach(ruleP => {
33
- const childNodes = Array.from(ruleP.childNodes);
34
- const ruleID = childNodes[0].textContent.slice(4).toLowerCase();
35
- const ruleText = childNodes
36
- .slice(1)
37
- .map(node => node.textContent)
38
- .join(' ')
39
- .trim()
40
- .replace(/"/g, '\'')
41
- .replace(/\s+/g, ' ');
42
- ruleData[ruleID] = ruleText;
21
+ try {
22
+ const response = await rulePage.goto('https://alfa.siteimprove.com/rules', {timeout: 10000});
23
+ let ruleData = {};
24
+ if (response.status() === 200) {
25
+ // Compile data on the rule IDs and summaries.
26
+ ruleData = await rulePage.evaluate(() => {
27
+ const rulePs = Array.from(document.querySelectorAll('p.h5'));
28
+ const ruleData = {};
29
+ rulePs.forEach(ruleP => {
30
+ const childNodes = Array.from(ruleP.childNodes);
31
+ const ruleID = childNodes[0].textContent.slice(4).toLowerCase();
32
+ const ruleText = childNodes
33
+ .slice(1)
34
+ .map(node => node.textContent)
35
+ .join(' ')
36
+ .trim()
37
+ .replace(/"/g, '\'')
38
+ .replace(/\s+/g, ' ');
39
+ ruleData[ruleID] = ruleText;
40
+ });
41
+ return ruleData;
43
42
  });
44
- return ruleData;
45
- });
46
- await rulePage.close();
47
- }
48
- const data = [];
49
- await Scraper.with(async scraper => {
50
- for (const input of await scraper.scrape(page.url())) {
51
- const audit = Audit.of(input, alfaRules.default);
52
- const outcomes = Array.from(await audit.evaluate());
53
- outcomes.forEach((outcome, index) => {
54
- const {target} = outcome;
55
- if (target && ! target._members) {
56
- const outcomeJ = outcome.toJSON();
57
- const verdict = outcomeJ.outcome;
58
- if (verdict !== 'passed') {
59
- const {rule} = outcomeJ;
60
- const {tags, uri, requirements} = rule;
61
- const ruleID = uri.replace(/^.+-/, '');
62
- const ruleSummary = ruleData[ruleID] || '';
63
- const targetJ = outcomeJ.target;
64
- const codeLines = target.toString().split('\n');
65
- if (codeLines[0] === '#document') {
66
- codeLines.splice(2, codeLines.length - 3, '...');
67
- }
68
- else if (codeLines[0].startsWith('<html')) {
69
- codeLines.splice(1, codeLines.length - 2, '...');
70
- }
71
- const outcomeData = {
72
- index,
73
- verdict,
74
- rule: {
75
- ruleID,
76
- ruleSummary,
77
- scope: '',
78
- uri,
79
- requirements
80
- },
81
- target: {
82
- type: targetJ.type,
83
- tagName: targetJ.name || '',
84
- path: target.path(),
85
- codeLines: codeLines.map(line => line.length > 99 ? `${line.slice(0, 99)}...` : line)
43
+ await rulePage.close();
44
+ }
45
+ const data = [];
46
+ await Scraper.with(async scraper => {
47
+ for (const input of await scraper.scrape(page.url())) {
48
+ const audit = Audit.of(input, alfaRules.default);
49
+ const outcomes = Array.from(await audit.evaluate());
50
+ outcomes.forEach((outcome, index) => {
51
+ const {target} = outcome;
52
+ if (target && ! target._members) {
53
+ const outcomeJ = outcome.toJSON();
54
+ const verdict = outcomeJ.outcome;
55
+ if (verdict !== 'passed') {
56
+ const {rule} = outcomeJ;
57
+ const {tags, uri, requirements} = rule;
58
+ const ruleID = uri.replace(/^.+-/, '');
59
+ const ruleSummary = ruleData[ruleID] || '';
60
+ const targetJ = outcomeJ.target;
61
+ const codeLines = target.toString().split('\n');
62
+ if (codeLines[0] === '#document') {
63
+ codeLines.splice(2, codeLines.length - 3, '...');
86
64
  }
87
- };
88
- const etcTags = [];
89
- tags.forEach(tag => {
90
- if (tag.type === 'scope') {
91
- outcomeData.rule.scope = tag.scope;
65
+ else if (codeLines[0].startsWith('<html')) {
66
+ codeLines.splice(1, codeLines.length - 2, '...');
92
67
  }
93
- else {
94
- etcTags.push(tag);
68
+ const outcomeData = {
69
+ index,
70
+ verdict,
71
+ rule: {
72
+ ruleID,
73
+ ruleSummary,
74
+ scope: '',
75
+ uri,
76
+ requirements
77
+ },
78
+ target: {
79
+ type: targetJ.type,
80
+ tagName: targetJ.name || '',
81
+ path: target.path(),
82
+ codeLines: codeLines.map(line => line.length > 99 ? `${line.slice(0, 99)}...` : line)
83
+ }
84
+ };
85
+ const etcTags = [];
86
+ tags.forEach(tag => {
87
+ if (tag.type === 'scope') {
88
+ outcomeData.rule.scope = tag.scope;
89
+ }
90
+ else {
91
+ etcTags.push(tag);
92
+ }
93
+ });
94
+ if (etcTags.length) {
95
+ outcomeData.etcTags = etcTags;
95
96
  }
96
- });
97
- if (etcTags.length) {
98
- outcomeData.etcTags = etcTags;
97
+ data.push(outcomeData);
99
98
  }
100
- data.push(outcomeData);
101
99
  }
102
- }
103
- });
104
- }
105
- });
106
- return {result: data};
100
+ });
101
+ }
102
+ });
103
+ return {result: data};
104
+ }
105
+ catch(error) {
106
+ console.log(`ERROR: navigation to URL timed out (${error})`);
107
+ return {result: {error: 'ERROR: navigation to URL timed out'}};
108
+ }
107
109
  };