Read the statement by Michael Teeuw here.
Test suite for MagicMirror²
-
Okay, just another brainfart.
For the tests to run consistently and in such a way that we can test whatever is needed, we’re probably going to need a separate configuration file, maybe even a couple. If I’ve read the code correctly, we could set
nodeIntegration
in this config, without touching the code in MM to check for environment settings…This would be cleaner imho
-
@qistoph Sound good and I like it. Now we can set by electronOptions in configuration file, same logic as you say.
The point to resolved is how can tell to MagicMirror read a specific file of configuration. Now is set in hardcoded. With than can be create multiples instances of configuration files into tests suite (tests directory) and run test to these. Added this task in Trello.
-
Hi,
Today I’ve working a problem of issue with Electron and other things, all details here
https://github.com/MichMich/MagicMirror/issues/577After testing in two enviroment different for Lite and with Pixel on Raspbian, the process is long because you need the create SD and follow the instruction and check what could be the problem.
I think this can be automatic and running on a hosted system or my own machine. Someone know howto use a arm image for RaspberryPi and run like a Docker’s container? for run a test of enviroments. I think can be a help to include in the Test Suite.
-
@roramirez I haven’t played with Docker in a while and never tried raspbian on a docker container. Quickly glanced at DockerHub and it seems that people are able to do that. https://hub.docker.com/search/?isAutomated=1&isOfficial=0&page=1&pullCount=0&q=raspbian&starCount=0
I may take a look into it, but it all depends on my availability. -
Hi, I recently pushed a Pull Request with two e2e testing.
https://github.com/MichMich/MagicMirror/pull/669These use their own configurations like @qistoph mention and after added the MM_CONFIG_FILE variable for MagicMirror.
It’s really easy create new test for check a different part of MagicMirror and their modules.
-
@roramirez what is the reason for a 10 sec timeout in each test? If there are a many tests this will sum up
-
@strawberry-3.141 said in Test suite for MagicMirror²:
what is the reason for a 10 sec timeout in each test? If there are a many tests this will sum up
It’s does not accumulate. It’s a timeout, the maximun time for the test. You can set different timeout for every test.
-
I haven’t looked thoroughly at the code and I wanted to suggest setting a default timeout that can be overwritten in individual tests as needed. It may make test code a little bit cleaner and less repetitive.
Good job getting it going!
-
@morozgrafix Yes, I knowed is not more cleaner and repetitive but was the first proof of concept ;)
Good idea set default timeout. I added two new task in Trello board about you mentioned.
-
@roramirez I’ve played a little with test suite and added basic test for clock module. Then I realized that if we want to test different config options for a given module we may need to have to create multiple configs, which may be challenging with current tests directory organization.
Also I believe thatprocess.env.MM_CONFIG_FILE = "tests/confs/config_name.js"
line needs to be moved intobefore
step (seems to work there or it can go intobeforeEach
if needed). Otherwise when runningnpm run test:e2e
first config that gets picked up seems to persist throughout all of the tests and always used by theapp.js
.I was wondering if structure similar to this makes sense:
tests ├── configs │ ├── env.js │ └── modules │ │ └── clock │ │ │ └── clock_12hr.js │ │ │ └── clock_24hr.js │ │ │ └── clock_analog.js │ │ └── helloworld │ │ └── helloworld.js ├── e2e │ ├── env_spec.js │ └── modules │ ├── clock_spec.js │ └── helloworld_spec.js ├── functions │ └── compare-version_spec.js └── global_vars └── root_path.js
but this would involve changingI think that’s easily solved by just changing it toapp.use("/tests/confs", express.static(path.resolve(global.root_path + "/tests/confs")));
in theserver.js
to be somewhat dynamic and I’m not very familiar with express on how it can be done.app.use("/tests/configs", express.static(path.resolve(global.root_path + "/tests/configs")));