Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix CircleCi Setup Errors #3870

Conversation

vrosenberg
Copy link
Contributor

Multiple Browserstack Sessions for functional tests in order to not exceed 2h timeout limit
Tests split into multiple CircleCI Jobs to not exceed 3h timeout on current circleci plan

@vrosenberg vrosenberg self-assigned this Feb 2, 2022
@dsilhavy dsilhavy added this to the 4.3.0 milestone Feb 2, 2022
- run:
name: Run functional tests (edge / https) VOD (Static MPD)
command:
node test/functional/runTests.js --selenium=remote --reporters=junit --app=remote --browsers=edge --protocol=https --streams="VOD (Static MPD)"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Set default to Chrome please

@@ -133,6 +133,88 @@ jobs:
- store_test_results:
path: test/functional/reports

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove functional-tests-all if not required anymore

name: Run functional tests (edge / https) LIVE (Dynamic MPD)
when: always # run tests even if some previous tests failed
command:
node test/functional/runTests.js --selenium=remote --reporters=junit --app=remote --browsers=edge --protocol=https --streams="LIVE (Dynamic MPD)"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to define a variable for the browser? Instead of writing edge or chrome multiple times define that globally?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, jobs can be made configurable
https://circleci.com/docs/2.0/reusing-config/

i suggest defining ONE generic functional test job and then run it with params like:

     - functional-test
             browsers: "edge"
             protocol: "https"
             streams: "Live Low Latency"
     - functional-test
             browsers: "chrome"
             protocol: "https"
             streams: "Live Low Latency"

command:
node test/functional/runTests.js --selenium=remote --reporters=junit --app=remote --browsers=edge --protocol=https --streams="LIVE (Dynamic MPD)"
- run:
name: Run functional tests (edge / https) Live Low Latency
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume the different tasks are processed sequentially. Is it possible to run them in parallel? Do we need to split this to separate jobs then?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, we should use jobs instead of sequential steps! Again, this can be done very elegant using configurable jobs. Jobs ran in a workflow are executed in parallel

@@ -158,5 +240,7 @@ workflows:
only:
- development
jobs:
- functional-tests-all
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vrosenberg if functional-tests-all job is removed and substituted by others then the "dead" configuration should be removed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see this comment as obsolete in favor to rework using configurable jobs

Comment on lines 139 to 143
- functional_precondition
- checkout
- dependencies_setup
- build_unit_test_steps
- functional_test_setup
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's create a new re-usable command that includes this 5 steps and use the command. i believe it's better since the steps are copied already 3 times

e.g.

commands:
    functional_steps:
        steps:
            - functional_precondition
            - checkout
            - dependencies_setup
            - build_unit_test_steps
            - functional_test_setup

and then use...

    functional-tests-without-DRM:
        executor: dashjs-executor
        steps:
            - functional_steps
            - run:

wdyt @vrosenberg ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, it reduces redundancy and increases readability

name: Run functional tests (edge / https) LIVE (Dynamic MPD)
when: always # run tests even if some previous tests failed
command:
node test/functional/runTests.js --selenium=remote --reporters=junit --app=remote --browsers=edge --protocol=https --streams="LIVE (Dynamic MPD)"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, jobs can be made configurable
https://circleci.com/docs/2.0/reusing-config/

i suggest defining ONE generic functional test job and then run it with params like:

     - functional-test
             browsers: "edge"
             protocol: "https"
             streams: "Live Low Latency"
     - functional-test
             browsers: "chrome"
             protocol: "https"
             streams: "Live Low Latency"

command:
node test/functional/runTests.js --selenium=remote --reporters=junit --app=remote --browsers=edge --protocol=https --streams="LIVE (Dynamic MPD)"
- run:
name: Run functional tests (edge / https) Live Low Latency
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, we should use jobs instead of sequential steps! Again, this can be done very elegant using configurable jobs. Jobs ran in a workflow are executed in parallel

bbert and others added 3 commits February 8, 2022 10:28
* VideoModel: fix returned current time and seeking state according to current seeking value

* VideoModel: fix returned current time and seeking state according to current seeking value

* VideoModel: fix returned current time and seeking state according to current seeking value
@vrosenberg
Copy link
Contributor Author

The functional tests connect to a BrowserStack session. In the current plan it only allows for 5 parallel automated testing sessions. I would implement a combination of parallelizing 5 jobs, which include multiple steps within in order to spread out the workload and reduce the time for test execution.

@vrosenberg
Copy link
Contributor Author

updated PR is here
#3880

@vrosenberg vrosenberg closed this Feb 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants