isomorfeus-puppetmaster 0.5.4 → 0.5.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3a4c981525c3a8381541a2c0d39e136912b48c806f3531e8fc154843df3d295
4
- data.tar.gz: 660c1ba75a82c53d2dad7c1586b0630aca667daa9aab971172cbeed0faf657f3
3
+ metadata.gz: 3a4b1855e0c0b1039666aa3ae0c5b1e1a8b2bb0c8b424dc7bc81bcd446fa88e4
4
+ data.tar.gz: e932a68c21221b7b526496c3e16f7d1eec0f4342ad625228771de054e944d88e
5
5
  SHA512:
6
- metadata.gz: 7f94f1072bce9043e6eff190c0665ce76891f59e05c23577fb47f963661b2c864faeced4038da8e66458490ebc101dfbc7ac564cdc0f64ac38f0eada78960426
7
- data.tar.gz: 53654204b887af7778dc5239b9e9961b2fdb44ad4560491e81e2d688c453a30411292868d1eb4f1df41088b68361b79dec37520739f5ec33f8d56b85a2b994b1
6
+ metadata.gz: 725d868d6bffc3c3ee9e8e105c26804b96b34db21dab68373e72f5c2f22ca2ea59f7a3d013484fcaf7cc388bd4e5d67f9621c102ac2737e290365aca06e0d948
7
+ data.tar.gz: 89fdfe7e7605221e593056db787d0a2ae01d57c607ac0e4d1d3a3151334ba7bf8e6a2240f631a86bc6d321e8926ddefe1f8dee0bc2894ae9a46a1a15ba001983
data/README.md CHANGED
@@ -1,28 +1,23 @@
1
- # isomorfeus-puppetmaster
2
-
3
- A framework for acceptance tests or simply running tests in a headless browser.
4
- Comes with drivers for chrome headless.
1
+ <h1 align="center">
2
+ <img src="https://github.com/isomorfeus/isomorfeus-puppetmaster/blob/master/Logo.png?raw=true" align="center" width="234" height="453" />
3
+ <br/>
4
+ Isomorfeus Puppetmaster<br/>
5
+ </h1>
6
+ A framework for acceptance tests or simply running tests in a headless browser.
7
+ Comes with drivers for chromium headless.
5
8
  Allows for writing javascript browser tests in pure ruby.
6
9
 
7
10
  ### Community and Support
8
11
  At the [Isomorfeus Framework Project](http://isomorfeus.com)
9
12
 
10
- ## Running on:
11
- - [CircleCI](https://circleci.com): [![CircleCI](https://circleci.com/gh/isomorfeus/isomorfeus-puppetmaster/tree/master.svg?style=svg)](https://circleci.com/gh/isomorfeus/isomorfeus-puppetmaster/tree/master)
12
- - [SemaphoreCI 2.0](https://semaphoreci.com): (not yet available)
13
- - [TravisCI](https://travis-ci.org): [![Build Status](https://travis-ci.org/isomorfeus/isomorfeus-puppetmaster.svg?branch=master)](https://travis-ci.org/isomorfeus/isomorfeus-puppetmaster)
14
-
15
13
  ## Installation
16
14
 
17
15
  In Gemfile:
18
16
  `gem 'isomorfeus-puppetmaster'`, then `bundle install`
19
17
 
20
- Also requires the following npm modules with recommended versions:
21
-
22
- - [puppeteer 10.2.x](https://github.com/GoogleChrome/puppeteer#readme) - for the chrome driver
18
+ Comes included with:
23
19
 
24
- Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
25
- Speednode will pickup the node modules then from the projects root node_modules directory.
20
+ - [puppeteer-core](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
26
21
 
27
22
  ## Configuration
28
23
 
@@ -63,13 +58,13 @@ There are Browsers which may have windows or tabs, which translate to targets or
63
58
  In Puppetmaster, which is focusing on headless testing, the main "thing" is **just a document**. Its possible to open many documents at once, but what exactly a document is contained in,
64
59
  a window or tab or browser or target or whatever, is not of interest.
65
60
  A document consists of nodes. Simply working with just documents and nodes makes testing a lot simpler.
66
- ```
61
+ ```
67
62
  document
68
63
  |____head (is a node)
69
64
  | |
70
65
  | |___more nodes
71
66
  | |___...
72
- |
67
+ |
73
68
  |____body (is a node)
74
69
  |
75
70
  |___more nodes
@@ -132,7 +127,7 @@ TODO
132
127
  #### DOM changes by Javascript, Timing
133
128
 
134
129
  TODO
135
-
130
+
136
131
  ## Nodes
137
132
 
138
133
  ### Finding Nodes ...
@@ -253,7 +253,17 @@ module Isomorfeus
253
253
  string_options = []
254
254
  options = @options.dup
255
255
  string_options << "ignoreHTTPSErrors: #{options.delete(:ignore_https_errors)}" if options.key?(:ignore_https_errors)
256
- string_options << "executablePath: '#{options.delete(:executable_path)}'" if options.key?(:executable_path)
256
+ if Gem::Platform.local.os == 'linux' && Gem::Platform.local.cpu.start_with?('arm')
257
+ chromium_path = if options.key?(:executable_path)
258
+ options.delete(:executable_path)
259
+ else
260
+ Isomorfeus::Speednode::NodeCommand.which(['chromium'])
261
+ end
262
+ raise "Chromium not found. Please install chromium manually." unless chromium_path
263
+ string_options << "executablePath: '#{chromium_path}'"
264
+ else
265
+ string_options << "executablePath: '#{options.delete(:executable_path)}'" if options.key?(:executable_path)
266
+ end
257
267
  options.each do |option, value|
258
268
  string_options << "#{option.to_s.camelize(:lower)}: #{value}"
259
269
  end
@@ -283,16 +293,16 @@ module Isomorfeus
283
293
  var LastErr = null;
284
294
  var LastExecutionFinished = false;
285
295
  var LastHandleId = 0;
286
-
296
+
287
297
  var AllPageHandles = {};
288
298
  var AllElementHandles = {};
289
-
299
+
290
300
  var CurrentBrowser = null;
291
301
  var ConsoleMessages = {};
292
-
302
+
293
303
  var ModalText = null;
294
304
  var ModalTextMatched = false;
295
-
305
+
296
306
  const EnsureBrowser = async function() {
297
307
  var revisions = await BrowserFetcher.localRevisions();
298
308
  if (!revisions.includes(default_revision)) {
@@ -306,48 +316,48 @@ module Isomorfeus
306
316
  if (LastExecutionFinished === true) {
307
317
  var err = LastErr;
308
318
  var res = LastResult;
309
-
319
+
310
320
  LastErr = null;
311
321
  LastRes = null;
312
322
  LastExecutionFinished = false;
313
-
323
+
314
324
  if (err) { return [null, {name: err.name, message: err.message, stack: err.stack}]; }
315
325
  else { return [res, null]; }
316
-
326
+
317
327
  } else {
318
328
  var new_err = new Error('Last command did not yet finish execution!');
319
329
  return [null, {name: new_err.name, message: new_err.message, stack: new_err.stack}];
320
330
  }
321
331
  };
322
-
332
+
323
333
  const DialogAcceptHandler = async (dialog) => {
324
334
  var msg = dialog.message()
325
335
  ModalTextMatched = (ModalText === msg);
326
336
  ModalText = msg;
327
337
  await dialog.accept();
328
338
  }
329
-
339
+
330
340
  const DialogDismissHandler = async (dialog) => {
331
341
  var msg = dialog.message()
332
342
  ModalTextMatched = (ModalText === msg);
333
343
  ModalText = msg;
334
344
  await dialog.dismiss();
335
345
  }
336
-
346
+
337
347
  const RegisterElementHandle = function(element_handle) {
338
348
  var entries = Object.entries(AllElementHandles);
339
- for(var i = 0; i < entries.length; i++) {
349
+ for(var i = 0; i < entries.length; i++) {
340
350
  if (entries[i][1] === element_handle) { return entries[i][0]; }
341
351
  }
342
352
  LastHandleId++;
343
353
  var handle_id = LastHandleId;
344
354
  AllElementHandles[handle_id] = element_handle;
345
- return handle_id;
355
+ return handle_id;
346
356
  };
347
-
357
+
348
358
  const RegisterPage = function(page) {
349
359
  var entries = Object.entries(AllPageHandles);
350
- for(var i = 0; i < entries.length; i++) {
360
+ for(var i = 0; i < entries.length; i++) {
351
361
  if (entries[i][1] === page) { return entries[i][0]; }
352
362
  }
353
363
  LastHandleId++;
@@ -360,12 +370,14 @@ module Isomorfeus
360
370
  AllPageHandles[handle_id].on('pageerror', (error) => {
361
371
  ConsoleMessages[handle_id].push({level: 'error', location: '', text: error.message});
362
372
  });
363
- return handle_id;
373
+ return handle_id;
364
374
  };
365
-
375
+
366
376
  (async () => {
367
377
  try {
368
- await EnsureBrowser();
378
+ if (process.arch !== 'arm') {
379
+ await EnsureBrowser();
380
+ }
369
381
  CurrentBrowser = #{launch_line}
370
382
  var page = (await CurrentBrowser.pages())[0];
371
383
  page.setDefaultTimeout(#{@puppeteer_timeout});
@@ -1,3 +1,3 @@
1
1
  module Isomorfeus
2
- PUPPETMASTER_VERSION = '0.5.4'
2
+ PUPPETMASTER_VERSION = '0.5.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-puppetmaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-10 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.4.3
33
+ version: 0.4.6
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.4.3
40
+ version: 0.4.6
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: method_source
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: opal
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 1.3.0.rc1
75
+ version: 1.3.2
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 1.3.0.rc1
82
+ version: 1.3.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: parser
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -282,14 +282,14 @@ dependencies:
282
282
  requirements:
283
283
  - - "~>"
284
284
  - !ruby/object:Gem::Version
285
- version: 3.47.0
285
+ version: 3.50.0
286
286
  type: :development
287
287
  prerelease: false
288
288
  version_requirements: !ruby/object:Gem::Requirement
289
289
  requirements:
290
290
  - - "~>"
291
291
  - !ruby/object:Gem::Version
292
- version: 3.47.0
292
+ version: 3.50.0
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: tilt
295
295
  requirement: !ruby/object:Gem::Requirement