How to access client window javascript global variable with Spectron

853 views Asked by At

I'm trying test of Electron app with Spectron. But I can't test client window javascript global variable. Here is my simplified code. Please help me. Thanks.

index.html

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>MY ELECTRON</title>
        <script type="text/javascript" src="script.js"></script>
    <link href="./style.css" rel="stylesheet">
</head>
<body>
</body>
</html>

script.js

let mode;
function onload_func(){
    mode = 'normal';
}
window.onload = onload_func;

spec.js

const Application = require('spectron').Application
const assert = require('assert')
const electronPath = require('electron')
const path = require('path')
let app;
describe('Application launch', function () {
  this.timeout(10000)
  beforeEach(function () {
    app = new Application({
      path: electronPath,
      args: [path.join(__dirname, '../src')]
    })
    return app.start()
  })
  afterEach(function () {
    if (app && app.isRunning()) {
      return app.stop()
    }
  })
    it('initial mode',function(){
        assert.equal(app.client.mode,'normal');
    })
})
1

There are 1 answers

1
rafaelcastrocouto On

I'm not sure if it will solve your specific tests, but app.browserWindow should do the trick since as they say:

It provides you access to the current BrowserWindow and contains all the APIs.

Note that it's an alias to require('electron').remote.getCurrentWindow()

Read more: https://github.com/electron/spectron#browserwindow