• 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 38.1k 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.
  • R Offline
    roramirez Core Contributors
    last edited by Jan 26, 2017, 7:19 PM

    Hi,

    Today I’ve working a problem of issue with Electron and other things, all details here
    https://github.com/MichMich/MagicMirror/issues/577

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

    Easy module development with MagicMirror Module Template

    M 1 Reply Last reply Jan 26, 2017, 7:32 PM Reply Quote 0
    • 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
                      • 1
                      • 2
                      • 3
                      • 4
                      • 5
                      • 2 / 5
                      2 / 5
                      • First post
                        13/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