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

Refactor/breaking dependency cycles #202

Merged
merged 7 commits into from Jul 8, 2020

Conversation

levanhieu8396
Copy link
Contributor

Breaking dependency cycles as shown below

image

resolve #176

Copy link
Contributor

@ivanvanderbyl ivanvanderbyl left a comment

Choose a reason for hiding this comment

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

This is a huge improvement, great work!!

It looks like we still have 2 cyclic deps:

❯ npx madge --circular --extensions ts ./packages
npx: installed 150 in 20.125s
Processed 204 files (1.9s) (32 warnings)

✖ Found 2 circular dependencies!

1) core/src/driver/puppeteer.ts
2) core/src/page/Locator.ts > core/src/page/ElementHandle.ts

@levanhieu8396
Copy link
Contributor Author

levanhieu8396 commented Jul 6, 2020

This is a huge improvement, great work!!

It looks like we still have 2 cyclic deps:

❯ npx madge --circular --extensions ts ./packages
npx: installed 150 in 20.125s
Processed 204 files (1.9s) (32 warnings)

✖ Found 2 circular dependencies!

1) core/src/driver/puppeteer.ts
2) core/src/page/Locator.ts > core/src/page/ElementHandle.ts

I've just taken a look and see that:

  1. There are no cycles involving core/src/driver/Puppeteer.ts
  2. The cycle core/src/page/Locator.ts > core/src/page/ElementHandle.ts has already been fixed, using lazy import

I checked using eslint and there are no cycles left, don't know how it's still showing here.

I think the result when using madge is wrong here. What do you think @ivanvanderbyl ?

@levanhieu8396 levanhieu8396 merged commit 8c0f9d1 into beta Jul 8, 2020
@levanhieu8396 levanhieu8396 deleted the refactor/breaking-dependency-cycles branch July 8, 2020 03:01
ivanvanderbyl added a commit that referenced this pull request Aug 29, 2020
* chore: general cleanup

* chore(release): publish v1.0.10-beta.63
[skip ci]

* chore(release): publish v1.0.11-alpha.0
[skip ci]

* chore: bump 1.0.11-alpha

* chore(release): publish v1.0.11-alpha.2
[skip ci]

* chore(ci): update node tasks

* chore(ci): lerna pre release

* chore(ci): remove node 14.x

* chore(ci): skip ci support

* chore(ci): run versioning task on more events

* chore(ci): checkout head sha

* chore(ci): remove branch filter

* chore(ci): try more lax filter

* chore(ci): try checkout head ref

* chore(ci): disable branch filter

* chore(ci): publish prerelease

* chore(ci): skip git tags

* chore(ci): disable publish on bk

* chore(ci): auth and check

* chore(ci): try complete url

* chore(ci): try using built in npm actions

* chore(ci): ignore npm login

* chore(ci): enable yarn caching

* chore(ci): check npm config

* chore(ci): set token on each step

* chore(ci): more explicit setup

* chore(ci): read npm config from env

* chore(ci): use correct dist tag

* chore(release): publish v1.0.11-feat.0
[skip ci]

* fix(cli): update message

* chore(release): publish v1.0.11-feat.1
[skip ci]

* chore(ci): add conventional graduate

* chore(ci): checkout main ref

* chore(release): publish v1.0.11-feat.2
[skip ci]

* chore(ci): remove node modules caching

* chore(release): publish v1.0.11-feat.3
[skip ci]

* chore(ci): use conventional prerelease

* chore(ci): use --yes

* chore(release): publish v1.0.11-feat.4
[skip ci]

* feat(example): tesing release version bump to 1.1

* chore(release): publish v1.1.0-feat.0
[skip ci]

* chore(release): publish v1.2.0-feat.0
[skip ci]

* chore(ci): adds stable release publishing

* chore(release): publish v1.2.0-feat.1
[skip ci]

* chore(ci): rename CI task

* chore(release): publish v1.2.0-feat.2
[skip ci]

* chore(release): publish v1.2.0
[skip ci]

* chore(release): publish v1.2.1-feat.0
[skip ci]

* chore(ci): restrict beta workflow to feature/

* chore(ci): change preid to alpha

* chore(release): publish v1.2.1
[skip ci]

* ci: run CI on windows

* style: cleaned up comments

* ci:  make windows tests optional

* docs: readme

* ci: only publish beta and stable

* ci: rename jobs

* ci: disable Chrome download

* refactor: fix cyclic deps on TestScript and remove unused compiler

* style: eslint fix

* refactor: fixing cyclic dependencies

* chore(release): publish v1.2.2-beta.0
[skip ci]

* docs: add a graph explaining versioning

* chore(deps): bump morgan from 1.9.0 to 1.10.0 in /examples/navigating

Bumps [morgan](https://github.com/expressjs/morgan) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/expressjs/morgan/releases)
- [Changelog](https://github.com/expressjs/morgan/blob/master/HISTORY.md)
- [Commits](expressjs/morgan@1.9.0...1.10.0)

Signed-off-by: dependabot[bot] <support@github.com>

* docs: adds docs for run command

* ci: spit install and test commands

* ci: remove md as restricted change type

* chore(release): publish v1.2.2-beta.1
[skip ci]

* ci: prebuild in order

* chore: cleanup

* chore: fix broken import

* fix: remove double join on flood/flood directory

* style: cleanup old code

* fix: typo in lerna config from borked merge

* fix: update types on nullworkroot

* fix: borked lerna config

* fix: enable changes on md

* chore(release): publish v1.2.3-beta.0
[skip ci]

* chore: add debug support for agent

* test: fix flaky dialog test

* fix: flaky locator when target closed

* chore: fix cyclic deps on Observer

* chore: temp disable termImage

* chore: move EvaluatedScript to separate file

* chore: reducing cyclic deps on Test

* test: fix network path match on object

* chore: use async KSUID for network trace id

* chore: fix broken import

* style: small cleanup

* fix: return types of event conditions

* fix: test settings are partial

* fix: wait now returns any

* fix: package duplicate exports

* chore(release): publish v1.2.3-beta.1
[skip ci]

* fix: better support for faking agent production mode

* fix: use paths from environment

* chore(release): publish v1.2.3-beta.2
[skip ci]

* [bugfix] Loop Count setting does not work (#123)

* fix issue loop count setting does not work

* fix: loop count setting does not work
(create commit for updating commit message)
closes issue #91

* chore(release): publish v1.2.3-beta.3
[skip ci]

* Fix screenshot on failure not working (#124)

* fix: screenshotOnFailure not working

fix: screenshotOnFailure not working. Now screenshot every error if thsi option is on

* chore: sample for screenshot-on-failure

* chore(release): publish v1.2.3-beta.4
[skip ci]

* feat: text not match waiters (#131)

Added features:
Until.elementTextIsNot() - Full text not match comparison
Until.elementTextDoesNotMatch() - Regex not match comparison

* chore(release): publish v1.3.0-beta.0
[skip ci]

* feat: add-text-does-not-contain-waiter

Added:
Until.elementTextDoesNotContain()

* feat: add-title-not-match-waiters

Added features:
Until.titleDoesNotContain() - partial text title not match comparison
Until.titleIsNot() - full title text not match comparison
Until.titleDoesNotMatch() - regex title not match comparison

* feat: add-url-not-match-waiters

Added features:
Until.urlDoesNotContain() - partial url text not match comparison
Until.urlIsNot() - full url text not match comparison
Until.urlDoesNotMatch() - regex url not match comparison

* Feature/Make process.env reflect environment variables present when running the "element run" (#126)

* fix: make process.env reflect environment variables

* fix: make process.env reflect environment variables

* chore: make process.env reflect environment variables

* chore: clean code

* chore: update vm.sandbox.process.env = process.env;

* chore: update vm2 to 3.9.1

* chore: revert the compiler file

* chore: update yarn.lock

* chore: update webpack config -> change target to node

* chore: remove unused import

* chore(release): publish v1.3.0-beta.1
[skip ci]

* Feature/Send keys combination (#138)

* feat: support method to send key combinations

* chore: revert launch.json

* chore: add test

* chore: change description

* chore: clean test

* chore: update the way of using `sendKeyCombinations`

* chore: update the way of using `sendKeyCombinations`

* chore(release): publish v1.3.0-beta.2
[skip ci]

* Allow user to specify a return code when the test fails (#137)

* feat: add option fail-status-code to run command

* fix: add type for fail-status-code

* chore: throw fail result as error

* chore(release): publish v1.3.0-beta.3
[skip ci]

* Feature/Log step timings when running locally (#136)

* fix: log step timings when running locally

* fix: log step timings when running locally

* chore: change to private step time variable

* chore: move Timing class to core

* chore: move TimingObserver class to core

* chore: clean code

* chore: format the step timing

* chore: fix test

* Handle multiple Tabs/Windows (#149)

* chore: add methods to handle multiple pages (tabs)

* chore: switch page using TargetLocator

* chore: make activeFrame private again

* chore: add test for handing multiple pages

* chore: new page as return value of waitForNewPage

* Revert "Handle multiple Tabs/Windows (#149)" (#153)

This reverts commit 373c861.

* Feature/multi tabs or windows (#154)

* chore: add methods to handle multiple pages (tabs)

* chore: switch page using TargetLocator

* chore: make activeFrame private again

* chore: add test for handing multiple pages

* chore: new page as return value of waitForNewPage

* chore: minor changes

* Revert "Feature/multi tabs or windows (#154)" (#155)

This reverts commit 51328fe.

* Feature/multi tabs or windows (With fixing CI/CD) (#156)

* chore: add methods to handle multiple pages (tabs)

* chore: switch page using TargetLocator

* chore: make activeFrame private again

* chore: add test for handing multiple pages

* chore: new page as return value of waitForNewPage

* chore: minor changes

* chore: update yarn.lock

* chore(release): publish v1.3.0-beta.4
[skip ci]

* Feature/Allow to add step condition (#150)

* fix: provide ability to mark a step as "once off"

* chore: add interface + test for `step.once` fn

* chore: add implement for `step.once` fn

* chore: allow to add step option

* chore: clean

* chore: fix test

* chore: update interface for step

* chore: fix test

* fix: provide ability to mark a step as condition

* chore: clean code

* chore: clean code

* chore: clean code

* chore: update test

* chore: clean code

* chore: add test skip

* chore: catch error on predicate failing

* chore: fix `yarn install` error at local, update yarn.lock

* chore: clean code

* Revert "chore: fix `yarn install` error at local, update yarn.lock"

This reverts commit 44c552a.

* Revert "Feature/Allow to add step condition (#150)" (#157)

This reverts commit 3e212e1.

* Feature/Allow to mark step condition (#159)

* feat: allow to mark step as condition

* chore: fixing CI/CD

* chore(release): publish v1.3.0-beta.5
[skip ci]

* fix: through error when running debug on windows (#161)

* chore(release): publish v1.3.0-beta.6
[skip ci]

* Update cart1.ts

updated

* Update cart1.ts

script cleanup

* Update cart1.ts

stability updates when running on Flood

* fix: Unable to use the command line: generate <file.ts> #165 (#166)

* fix: unable to use the command line element generate

* fix: resolve review comments

* chore(release): publish v1.3.0-beta.7
[skip ci]

* fix: fix brew publish (#167)

* fix: element expected a response code 200-299 or 300-399 (#168)

* chore(release): publish v1.3.0-beta.8
[skip ci]

* feature/add step recovery (#160)

* chore: add interface for step recovery

* chore: add some logic for recovery step

* chore: clean code

* chore: clean code

* chore: add default option for Step Recovery

* chore: clean code

* chore: step recovery should be run 1 time

* chore: add setting maxRecovery and recoveryWith options

* chore: add setting maxRecovery and recoveryWith options

* chore: clean code

* chore: clean code

* chore: separate class Looper

* chore: separate class Looper

* chore(release): publish v1.3.0-beta.9
[skip ci]

* feat: enhance logic of element options #172 (#173)

* feat: enhance logic of element options

* feat: fix review comments

* feat: resolve review comment

* feat: clean code

* chore(release): publish v1.3.0-beta.10
[skip ci]

* feature/add step repeatable (#175)

* chore: add interface for step repeat

* chore: change name variable: maxRecovery -> recoveryTries

* chore: implement logic for step.repeat

* chore: clean code

* chore: move iterator to inside its step

* chore: add step while

* chore(release): publish v1.3.0-beta.11
[skip ci]

* bugfix: Fix issue of step repeat in recovery mode (#191)

* chore: fix issue step repeat

* chore: fix issue step repeat

* chore: revert launch.json

* chore: clean code

* chore(release): publish v1.3.0-beta.12
[skip ci]

* chore: fix setting `recoveryTries` does not work (#196)

* chore(release): publish v1.3.0-beta.13
[skip ci]

* fix: handle multiple tabs that contain frame (#193)

* chore(release): publish v1.3.0-beta.14
[skip ci]

* Features/global recovery step #181 (#199)

* feat: global recovery

* feat: global recovery step

* feat: handle global recovery step

* feat: implement global recovery

* feat: remove unused code

* feat: resolve review comments

* feat: resolved review comments

* feat: add log before running recovery step

* chore(release): publish v1.3.0-beta.15
[skip ci]

* Features/support functions with hook #179 (#189)

* feat: support hook functions

* feat: implement how to run test script with hook functions

* feat: handle hook functions when running a test script

* feat: clean code

* feat: rename function names

* feat: chaneg code review

* feat: add browser like a parameter of hook functions

* feat: handle hook functions

* feat: handle hook functions with browser

* feat: update the order of hook functions

* feat: update example test script

* feat: update content of test script

* feat: rename function name

* feat: rename package

* feat: CLI actions for launching tests on Flood (#177)

* feat: project-related commands and authentication

* feat: add command to run flood from cli

* feat: change message of some commands

* feat: change a message

* feat: countVUH as an util function

* feat: refactor

* feat: select project using project id or name

* feat: authenticate using token from user env

* fix: handle no recovery step

* feat: handle getting project from user env

* chore: change a description & virtual-user => virtual-users

* fix: change package name (#201)

* chore(release): publish v1.3.0-beta.16
[skip ci]

* [FLO-1691] Support a configuration file for reusing a config across tests within a project/repo #133 (#180)

* feat: generate test configuration file

* feat: set configuration template file

* feat: update configuration template file and add dircommand for run

* feat: update configuration template file

* feat: generate configuration file with cli init and clean unused code

* feat: read configuration file

* feat: run test script with configuration file

* feat: remove unused file

* feat: clean code

* feat: update code after merging beta into current branch

* feat: handle logic: how to run multiple test scripts

* feat: handle how to run multiple files

* feat: clean code

* feat: revert file

* feat: resolve review comments

* feat: clean code

* feat: show error message

* feat: change code

* feat: validate value of config-file

* feat: update correct message

* feat: remove unused options in cmd

* chore(release): publish v1.3.0-beta.17
[skip ci]

* refactor: breaking dependency cycles (#202)

* fix: break cycle Locator - ElementHandle

* fix: break cycles Browser - TargetLocator, Browser - FrameCondition

* fix: break cycle Until - Condition - toLocatorError - runtime/types

* fix: break cycle runtime/types - Step

* fix: break cycle Test - observers

* chore: revert some changes

* chore(release): publish v1.3.0-beta.18
[skip ci]

* chore: bump

* fix: find frame from current window if not found from current page (#188)

* chore(release): publish v1.3.0-beta.19
[skip ci]

* fix: change incorrect versions to the latest (#229)

* chore(release): publish v1.3.0-beta.20
[skip ci]

* chore(release): publish v1.3.0-beta.21
[skip ci]

* chore: force publish all packages + auto publish to brew (#234)

* chore(release): publish v1.3.0-beta.22
[skip ci]

* fix: fix several bugs found on element api (#238)

* fix: fix several bugs found on element api

* fix:  publish to brew command

* chore(release): publish v1.3.0-beta.23
[skip ci]

* fix: error publishing release to Homebrew (#240)

* fix: use SSH instead of HTTPS

* chore: revert changes made for testing

* chore(release): publish v1.3.0-beta.24
[skip ci]

* Revert "fix: error publishing release to Homebrew (#240)" (#241)

This reverts commit 41491e7.

* chore(release): publish v1.3.0-beta.25
[skip ci]

* [FLO-1692] Support external deps on Flood (#209)

* chore: add `compile` command

* chore: fix compile

* chore: clean code

* chore: clean code

* chore: clean code

* chore: allow compile from config file

* chore: clean code

Co-authored-by: lebaphi <phi@flood.io>

* chore(release): publish v1.3.0-beta.26
[skip ci]

Co-authored-by: Ivan Vanderbyl <ivanvanderbyl@gmail.com>
Co-authored-by: Ivan Vanderbyl <ivanvanderbyl@users.noreply.github.com>
Co-authored-by: flud-buildbox <accounts@flood.io>
Co-authored-by: GitHub <octobot@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: phileba <phi@flood.io>
Co-authored-by: huyennbl <33422297+huyennbl@users.noreply.github.com>
Co-authored-by: huyennbl <huyennbl@engineer.com>
Co-authored-by: HieuLeKMS <hieule@kms-technology.com>
Co-authored-by: ai@flood.io <65391800+ai-flood@users.noreply.github.com>
Co-authored-by: Jason Rizio <jason.rizio@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants