Selenium co-creator here (albeit v1), WebElement is pubic API and not impl-detail. If you're making a library for downstream *testing* teams to use, then selenium-java jumps from test-scope to prod-scope of course and is now a transitive dep. Many build/test tools makers are in the same place for "what is our prod code vs test code".
And in that we-ship-a-lib-that-uses-selenium space, then perhaps there you're wanting to wrap WebElement. I do so for FluentSelenium - https://github.com/SeleniumHQ/fluent-selenium/blob/master/java/src/main/java/org/seleniumhq/selenium/fluent/FluentWebElement.java - but even then I make a getWebElement() for situations where they *really frickin want to*. If not a we-ship-a-lib-that-uses-selenium case, then I'm not following - Selenium is classically a test-scoped thing. If you're worried about hacker teams quietly promoting selenium-java from test-scope to no-scope and then those jars quietly being zipped into the (say) WAR file that heads to production, just use mvn-dependency:tree and python to discover that's happened, or unzip the uber/shade jar to look for verbotten classes, and then fail the CI build. On Thu, Jan 23, 2020 at 11:00 PM Scott Wilson <hocke...@gmail.com> wrote: > Hi Paul > > I write test automation and try to stick to a solid design. I find others > break solid design principles so having a <main> scope will prevent people > from breaking some basic principles. > > For example, if using Selenium I've seen multiple people expose WebElement > in a public method (that should be a private implementation detail). This > is just an example of horrible implementation I've seen multiple people do > without thinking. The new <main> scope will not prevent that however it > will prevent the following. > > I've seen people create src/tst/java/helloworld/MyTest.java which accesses > a WebElement directly in their Junit / TestNG class. The new <main> scope > will prevent stuff like that from happening. What they should really do is > create src/main/java/helloworld/MyPage.java which implements the > functionality using WebElement, then get an instance of MyPage from their > src/tst/java/helloworld/MyTest.java. > > That is just one obvious example but I've seen other poor implementations > using other dependencies which are as obvious what is good vs bad design > unless this principle is understood. > > Scott > > > > On Wed, Jan 22, 2020 at 11:43 PM Karl Heinz Marbaise <khmarba...@gmx.de> > wrote: > > > Hi, > > > > On 23.01.20 00:59, Scott Wilson wrote: > > > *Hi Robert and devs* > > > > > > > > > *I have been using maven for a few years and I LOVE it!* > > > > > > > > > *I have a feature request.* > > > > > > > > > *(1) When adding a dependency to pom.xml the default scope is > everywhere* > > > > > > *ie src/main/java/....* > > > > > > *and src/tst/java/...* > > > > > > > > > *(2) When adding <test> as the scope then the dependency can ONLY be > used > > > under src/tst/java...* > > > > > > *If referencing the dependency in src/main/java/... then it will not > > > compile* > > > > > > > *(3) My feature request:* > > > > > > *I want the exact opposite. I'd like a new scope called <main>* > > > > > > *If the scope is <main> then the dependency can ONLY be used under > > > src/main/java/...* > > > > > > *If referencing the dependency in tst/main/java/.... then it will not > > > compile* > > > > This would result in the problem that you neever can run / compile your > > unit- and integration tests cause something is missing on the classpath > > so in result your project would be unusable... > > > > > > > > > > > > > > > *I read up on scopes > > > (** > > > https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope > > > < > > > https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope > > >) > > > *and > > > AFAIK this is not currently supported, but I have a specific reason for > > > wanting this. > > > > It would be great if you could shared this with us > > > > > > Kind regards > > Karl Heinz Marbaise > > > > > > > > > > > > > *I'd really appreciate if someone can add that for me and let me know > > when > > > it's done.* > > > > > > *Please let me know if you have any questions.* > > > > > > > > > *Regards* > > > > > > *Scott Wilson* > > > > > > *http://linkedin.com/in/hockeyeh <http://linkedin.com/in/hockeyeh>* > > > > > >