Code Monkey home page Code Monkey logo

Comments (11)

twolfson avatar twolfson commented on July 20, 2024

Interesting, I'm going to guess this is being caused by the usage of require but I'll take a deeper look by the end of this week

from karma-electron.

timfish avatar timfish commented on July 20, 2024

I'm using SystemJS and transpiling from TypeScript. Below is my full config:

module.exports = function (config) {
  config.set({
    basePath: './',
    frameworks: ['systemjs', 'jasmine'],
    systemjs: {
      configFile: 'www/config.js',
      config: {
        paths: {
          "*": "*",
          "src/*": "src/*",
          "github:*": "www/jspm_packages/github/*",
          "npm:*": "www/jspm_packages/npm/*",
          "typescript": "node_modules/typescript/lib/typescript.js",
          "systemjs": "node_modules/systemjs/dist/system.js",
          'system-polyfills': 'node_modules/systemjs/dist/system-polyfills.js'
        },
        packages: {
          'src': {
            defaultExtension: 'ts'
          }
        },
        transpiler: 'typescript',
        typescriptOptions: {
          "module": "system",
          "emitDecoratorMetadata": true,
          "experimentalDecorators": true
        }
      },
      serveFiles: [
        'src/**/*.*',
        'www/jspm_packages/**/*.js'
      ]
    },
    files: [
      'src/**/*.spec.*'
    ],
    exclude: [],
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Electron'],
    singleRun: false
  });
};

from karma-electron.

timfish avatar timfish commented on July 20, 2024

I've created a basic repository which reproduces this issue.
https://github.com/timfish/karma-electron-test

I have also noticed that I no longer see the electron window when the tests are running.

from karma-electron.

timfish avatar timfish commented on July 20, 2024

I've worked out what's going wrong. I don't know what has changed (electron or karma) but the tests are being loaded in an iframe which don't have access to all the electron apis.

Simply adding the following to my karma.conf.js file gets it all working again:

client: {
  runInParent: true,
  useIframe: false
}

Can you override the defaults in the plugin?

from karma-electron.

timfish avatar timfish commented on July 20, 2024

By the way, I think require can be fixed by setting NODE_PATH.
electron/electron#2414

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

Thanks for your work on this so far

This plugin doesn't configure Karma in any way -- we force the useIframe convention via documentation:

https://github.com/twolfson/karma-electron/tree/5.1.1#getting-started

While runInParent might work, I feel like it could lead to undesired edge cases (e.g. continuous runs could have leaks between tests). I would like to leave this issue open so we can fix the iframe scenario

The linked Electron issue, electron/electron#2414, states NODE_PATH is a way to fix absolute node_modules (e.g. require('underscore')) but there is no fix for relative node_modules (e.g. require('./utils')) so we still need to overwrite require

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

Starting at my attempt to reproduce the issue

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

Our repository dependencies seem to have process.type defined as renderer. That's:

"electron": "~1.3.3",
...
"karma": "~1.1.0",

Going to try out your repo now to see if we can reproduce from that. Then we'll binary search for the source

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

While cloning/installing dependencies for the repro repo, we verified that latest Karma and Electron show process.renderer (albeit console.log stopped working so we need to look into that...):

"electron": "~1.6.2",
...
"karma": "~1.5.0",

Update: console.log was caused by log level changes in Karma karma-runner/karma#2540

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

Cool, we got a successful error reproduction with the repo you provided

from karma-electron.

twolfson avatar twolfson commented on July 20, 2024

Okay, we have figured out the source of the issue. It's due to missing the required configuration from the README. We missed that during the initial bug report. To repair the issue, add the following to your karma.conf.js:

preprocessors: {
  '**/*.js': ['electron']
},
client: {
  useIframe: false
},

Reference documentation:

https://github.com/twolfson/karma-electron/tree/5.1.1#getting-started

from karma-electron.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.