• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Test suite for MagicMirror²

Scheduled Pinned Locked Moved Upcoming Features
42 Posts 5 Posters 40.5k Views 6 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    morozgrafix Moderator @roramirez
    last edited by Jan 26, 2017, 7:32 PM

    @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.

    1 Reply Last reply Reply Quote 0
    • R Offline
      roramirez Core Contributors
      last edited by Jan 30, 2017, 3:55 PM

      Hi, I recently pushed a Pull Request with two e2e testing.
      https://github.com/MichMich/MagicMirror/pull/669

      These 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.

      Easy module development with MagicMirror Module Template

      S 1 Reply Last reply Jan 30, 2017, 4:22 PM Reply Quote 1
      • S Offline
        strawberry 3.141 Project Sponsor Module Developer @roramirez
        last edited by Jan 30, 2017, 4:22 PM

        @roramirez what is the reason for a 10 sec timeout in each test? If there are a many tests this will sum up

        Please create a github issue if you need help, so I can keep track

        R 1 Reply Last reply Jan 30, 2017, 4:27 PM Reply Quote 0
        • R Offline
          roramirez Core Contributors @strawberry 3.141
          last edited by Jan 30, 2017, 4:27 PM

          @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.

          Easy module development with MagicMirror Module Template

          1 Reply Last reply Reply Quote 1
          • M Offline
            morozgrafix Moderator
            last edited by Jan 30, 2017, 4:48 PM

            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!

            R 1 Reply Last reply Jan 30, 2017, 7:26 PM Reply Quote 0
            • R Offline
              roramirez Core Contributors @morozgrafix
              last edited by Jan 30, 2017, 7:26 PM

              @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.

              Easy module development with MagicMirror Module Template

              M 1 Reply Last reply Jan 31, 2017, 6:49 AM Reply Quote 1
              • M Offline
                morozgrafix Moderator @roramirez
                last edited by morozgrafix Jan 31, 2017, 5:40 PM Jan 31, 2017, 6:49 AM

                @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 that process.env.MM_CONFIG_FILE = "tests/confs/config_name.js" line needs to be moved into before step (seems to work there or it can go into beforeEach if needed). Otherwise when running npm run test:e2e first config that gets picked up seems to persist throughout all of the tests and always used by the app.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 changing app.use("/tests/confs", express.static(path.resolve(global.root_path + "/tests/confs"))); in the server.js to be somewhat dynamic and I’m not very familiar with express on how it can be done. I think that’s easily solved by just changing it to app.use("/tests/configs", express.static(path.resolve(global.root_path + "/tests/configs")));

                R 1 Reply Last reply Jan 31, 2017, 3:54 PM Reply Quote 0
                • R Offline
                  roramirez Core Contributors @morozgrafix
                  last edited by Jan 31, 2017, 3:54 PM

                  @morozgrafix Seem good sense going to a refactor of the structure.

                  I think we can take two way acord you mentioned.

                  1.- Include your test for clock module with new format for name and respective directories
                  2.- Do it the refactor to all tests that remain.

                  I really like see how you resolve the multiples instances configuration in a one tests file.

                  Easy module development with MagicMirror Module Template

                  M 1 Reply Last reply Jan 31, 2017, 5:26 PM Reply Quote 0
                  • M Offline
                    morozgrafix Moderator @roramirez
                    last edited by Jan 31, 2017, 5:26 PM

                    @roramirez cool thanks. I have it all ready on my fork. Will submit PR for review.

                    1 Reply Last reply Reply Quote 0
                    • Q Offline
                      qistoph
                      last edited by Feb 2, 2017, 12:25 PM

                      Two commits I’ve worked on for the testing.

                      1. Check keys in the translation files. Produces errors currently, so I’ve added .skip.
                        https://github.com/qistoph/MagicMirror/commit/123392c54934e49a397d586c1fb8dbcc4cc5d12b

                      2. To prevent loading app.js from corrupting the Mocha test environment, I suggest to execute the app.js in a virtual environment. This can also serve as an example for future test cases where code needs to be executed in the global namespace.
                        https://github.com/qistoph/MagicMirror/commit/cd8bee1371ffc6cce7b7bf44f85cd03705e4c1bd

                      Any thoughts before I submit a PR?

                      S R 2 Replies Last reply Feb 2, 2017, 12:31 PM Reply Quote 1
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 2 / 5
                      2 / 5
                      • First post
                        14/42
                        Last post
                      Enjoying MagicMirror? Please consider a donation!
                      MagicMirror created by Michael Teeuw.
                      Forum managed by Sam, technical setup by Karsten.
                      This forum is using NodeBB as its core | Contributors
                      Contact | Privacy Policy