Git Product home page Git Product logo

hyperrobotframeworkplugin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

hyperrobotframeworkplugin's Issues

Plugin errors when Pycharm is booting

I just installed the plugin to Pycharm version 2022.2.3 (Community Edition). Upon opening Pycharm, the plugin errors with the following stacktrace:

com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing 'com.intellij.psi.stubs.StubUpdatingIndex'
at com.intellij.serviceContainer.ComponentManagerImplKt.handleComponentError(ComponentManagerImpl.kt:1460)
at com.intellij.util.indexing.FileBasedIndexDataInitialization.lambda$initAssociatedDataForExtensions$0(FileBasedIndexDataInitialization.java:93)
at com.intellij.util.indexing.IndexDataInitializer.executeTask(IndexDataInitializer.kt:80)
at com.intellij.util.indexing.IndexDataInitializer.access$executeTask(IndexDataInitializer.kt:15)
at com.intellij.util.indexing.IndexDataInitializer$runParallelTasks$1$1.run(IndexDataInitializer.kt:52)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.intellij.diagnostic.PluginException: Cannot create class com.github.jnhyperion.hyperrobotframeworkplugin.psi.RobotParserDefinition (classloader=PluginClassLoader(plugin=PluginDescriptor(name=Hyper RobotFramework Support, id=com.github.jnhyperion.hyperrobotframeworkplugin, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/PyCharmCE2022.2/plugins/Hyper RobotFramework Support, version=0.1.0, package=null, isBundled=false), packagePrefix=null, instanceId=59, state=active))
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:883)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:900)
at com.intellij.serviceContainer.LazyExtensionInstance.createInstance(LazyExtensionInstance.java:55)
at com.intellij.serviceContainer.LazyExtensionInstance.getInstance(LazyExtensionInstance.java:44)
at com.intellij.serviceContainer.BaseKeyedLazyInstance.getInstance(BaseKeyedLazyInstance.java:38)
at com.intellij.psi.stubs.StubUpdatingIndex.getExtensions(StubUpdatingIndex.java:406)
at com.intellij.psi.stubs.StubUpdatingIndex.instantiateElementTypesFromFields(StubUpdatingIndex.java:399)
at com.intellij.psi.stubs.StubUpdatingIndex.lambda$ensureSerializationManagerInitialized$0(StubUpdatingIndex.java:389)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:223)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:238)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:222)
at com.intellij.psi.stubs.StubUpdatingIndex.ensureSerializationManagerInitialized(StubUpdatingIndex.java:388)
at com.intellij.psi.stubs.StubUpdatingIndex.getValueExternalizer(StubUpdatingIndex.java:301)
at com.intellij.util.indexing.impl.storage.DefaultIndexStorageLayout.createIndexStorage(DefaultIndexStorageLayout.kt:74)
at com.intellij.util.indexing.impl.storage.DefaultIndexStorageLayout$SingleEntryStorageLayout.openIndexStorage(DefaultIndexStorageLayout.kt:168)
at com.intellij.psi.stubs.StubUpdatingIndex$3.openIndexStorage(StubUpdatingIndex.java:348)
at com.intellij.util.indexing.impl.storage.TransientFileContentIndex$1.openIndexStorage(TransientFileContentIndex.java:43)
at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.lambda$new$0(VfsAwareMapReduceIndex.java:68)
at com.intellij.util.indexing.impl.MapReduceIndex.(MapReduceIndex.java:74)
at com.intellij.util.indexing.storage.MapReduceIndexBase.(MapReduceIndexBase.java:42)
at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.(VfsAwareMapReduceIndex.java:81)
at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.(VfsAwareMapReduceIndex.java:67)
at com.intellij.util.indexing.impl.storage.TransientFileContentIndex.(TransientFileContentIndex.java:39)
at com.intellij.psi.stubs.StubUpdatingIndexStorage.(StubUpdatingIndexStorage.java:34)
at com.intellij.psi.stubs.StubUpdatableIndexFactoryImpl.createIndex(StubUpdatableIndexFactoryImpl.java:20)
at com.intellij.psi.stubs.StubUpdatingIndex.createIndexImplementation(StubUpdatingIndex.java:340)
at com.intellij.util.indexing.FileBasedIndexImpl.createIndex(FileBasedIndexImpl.java:575)
at com.intellij.util.indexing.FileBasedIndexImpl.initIndexStorage(FileBasedIndexImpl.java:494)
at com.intellij.util.indexing.FileBasedIndexImpl.registerIndexer(FileBasedIndexImpl.java:453)
at com.intellij.util.indexing.FileBasedIndexDataInitialization.lambda$initAssociatedDataForExtensions$0(FileBasedIndexDataInitialization.java:84)
... 17 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.github.jnhyperion.hyperrobotframeworkplugin.psi.RobotParserDefinition
at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method)
at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520)
at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:844)
... 48 more

PyCharm freezes often when navigating from another window back to PyCharm

After installing this plugin and without having any other plugins, PyCharm became to freeze for a few minutes after jumping from another window back to PyCharm. After freeze, everything works fine until next freeze. Issue doesn't happen every time but often. There isn't any related log available, at least none of the PyCharm logs did grow after or during freeze situation.

My project is quite huge if that could somehow explain the situation. Without this plugin everything works fine.

Any ideas? Has anyone else reported this kind of behaviour?

=== About ===
Build version: PyCharm 2022.2.3 Build: #PC-222.4345.23 October 10, 2022
Theme: Darcula
JRE: 17.0.4.1+7-b469.62, JetBrains s.r.o.
JVM: 17.0.4.1+7-b469.62, OpenJDK 64-Bit Server VM, JetBrains s.r.o.
Operating System: Windows 10 10.0 (amd64)
idea.config.path=C:..\JetBrains\PyCharmCE2022.2
idea.system.path=C:..l\JetBrains\PyCharmCE2022.2
idea.plugins.path=C:..\JetBrains\PyCharmCE2022.2\plugins
idea.log.path=C:..\JetBrains\PyCharmCE2022.2\log
_JAVA_OPTIONS=-Xmx2G

=== System ===
Number of CPU: 4
Used memory: 397Mb
Free memory: 997Mb
Total memory: 1395Mb
Maximum available memory: 2048Mb

=== Plugins ===
Custom plugins: [Hyper RobotFramework Support (0.1.2)]
Disabled plugins:[]

Always insert 4 whitespace when typing Tab to be removed as this is controled with the code style in PyCharm

Hi there,

In the latest release there was implementation "Always insert 4 whitespace when typing Tab". This can be controlled in PyCharm by setting that in the Code Style section in the settings. We use tab to have better alignment in the keywords when we are using instead of using spaces. Tab is automatically adjustable.

I would like to propose this to be available for adjustment as per user desire, by the Code Style in PyCharm or in the Robot Options section as a checkbox.

Additionally as a improvement I would suggest the functionality to Capitalize Keywords to be limited to Library keywords not the ones that are written by the user or to provide option to choose.

image

Pycharm IDE internal error

java.lang.Throwable: Cannot distinguish StubFileElementTypes. This might worsen the performance. Providing unique externalId or adding a distinctive debugName when instantiating StubFileElementTypes can help. Version: psi.file:0:FILE -> [com.intellij.psi.tree.IStubFileElementType{psi.file;FILE;Language: Robot}, com.intellij.psi.tree.IStubFileElementType{psi.file;FILE;Language: ANY}]
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:202)
at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.lambda$determinePreviousFileElementType$8(PerFileElementTypeStubModificationTracker.java:203)
at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916)
at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.determinePreviousFileElementType(PerFileElementTypeStubModificationTracker.java:199)
at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.fastCheck(PerFileElementTypeStubModificationTracker.java:101)
at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.lambda$endUpdatesBatch$2(PerFileElementTypeStubModificationTracker.java:76)
at com.intellij.openapi.application.ReadAction.lambda$run$1(ReadAction.java:60)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:891)
at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:69)
at com.intellij.openapi.application.ReadAction.run(ReadAction.java:59)
at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.endUpdatesBatch(PerFileElementTypeStubModificationTracker.java:75)
at com.intellij.util.indexing.events.ChangedFilesCollector$4.endBatch(ChangedFilesCollector.java:246)
at com.intellij.util.indexing.events.ChangedFilesCollector$5.lambda$endBatch$2(ChangedFilesCollector.java:283)
at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:258)
at com.intellij.util.indexing.events.ChangedFilesCollector$5.endBatch(ChangedFilesCollector.java:282)
at com.intellij.util.indexing.events.VfsEventsMerger.processChanges(VfsEventsMerger.java:109)
at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesInReadAction(ChangedFilesCollector.java:265)
at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesToUpdateInReadAction(ChangedFilesCollector.java:224)
at com.intellij.util.indexing.events.ChangedFilesCollector.ensureUpToDate(ChangedFilesCollector.java:190)
at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:836)
at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:365)
at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:166)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:102)
at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:90)
at com.jetbrains.python.psi.stubs.PyClassNameIndex.find(PyClassNameIndex.java:28)
at com.jetbrains.python.psi.stubs.PyClassNameIndex.find(PyClassNameIndex.java:35)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.PythonResolver.d(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.PythonResolver.c(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.HeadingImpl.f(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.ResolverUtils.a(Unknown Source)
at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.RobotKeywordReference.resolve(Unknown Source)
at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:176)
at com.intellij.codeInsight.TargetElementUtilBase.doGetReferenceOrReferencedElement(TargetElementUtilBase.java:164)
at com.intellij.codeInsight.TargetElementUtilBase.getReferenceOrReferencedElement(TargetElementUtilBase.java:209)
at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:253)
at com.intellij.codeInsight.TargetElementUtilBase.doFindTargetElement(TargetElementUtilBase.java:232)
at com.intellij.codeInsight.TargetElementUtilBase.findTargetElement(TargetElementUtilBase.java:297)
at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:147)
at com.intellij.model.psi.impl.TargetsKt.fromTargetEvaluator(targets.kt:175)
at com.intellij.model.psi.impl.TargetsKt.declarationsOrReferences(targets.kt:136)
at com.intellij.model.psi.impl.TargetsKt.declaredReferencedData(targets.kt:42)
at com.intellij.model.psi.impl.TargetsKt.targetSymbols(targets.kt:24)
at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.getTargetSymbols(IdentifierHighlighterPass.java:194)
at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.highlightReferencesAndDeclarations(IdentifierHighlighterPass.java:186)
at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:91)
at com.intellij.codeInsight.highlighting.BackgroundHighlighter.lambda$submitIdentifierHighlighterPass$5(BackgroundHighlighter.java:203)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:746)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:778)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:573)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:537)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1102)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:72)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:129)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:110)
at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$1(ProgressManager.java:70)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679)
at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173)
at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:70)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:107)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:72)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:537)
at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:444)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
at java.base/java.lang.Thread.run(Thread.java:833)

Allow attach customize robot running commands

还是我之前提过一个被closed的issue相关联的问题,希望提供一个选项能解析txt格式的用例

转念一想,txt格式本身就是新版Robot所舍弃的格式,所以没有必要单独提供一个选项,我这边通过修改txt用正则关联格式,依然可以用代码提示和高亮

但是,却因此挖掘出一个需求,当前直接执行用例的方式是:
--test "XXX.XXX.." .
希望能提供一个全局选项,支持定义每次执行用例时,加入自定义robot参数(参数可以在Robot Option提供一个文本框,用户自己去填写,分成suite 、case两种不同的自定义参数添加)

比如说--loglevel debug 启用debug打印

这样我之前的需求,通过自定义参数,新增extension也能一起满足了~

Multiple same keywords check

当前已经有keyword not defined的检测,今天同事提交的代码里面,引用两个libraray,发现有同名的,但是目前hyperrobot framework识别不出来,RF执行会报错存在多个相同的keyword,希望能增加多Library引入下,同名函数关键字检测

[Return] is deprecated, implement RETURN as language keyword

New RETURN statement adds a uniform way to return from user keywords. It can be used for returning values when the keyword has been executed like when using the old [Return] setting, and also for returning prematurely like the old Return From Keyword keyword supports.

The old [Return] setting and old keywords Return From Keyword and Return From Keyword If continue to work. The plan is to deprecate and remove them in the future.

See : https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-5.0rc2.rst#return

Navigation not working

Using PyCharm 2022.2.3 (Build #PC-222.4345.23) or IntelliJ IDEA 2022.2.3 (Build #IU-222.4345.14)
navigating to referenced files doesn't seem to work properly.

We are importing Resources like the example below, which doesn't work.
*** Settings ***
Resource ../../APIResources/RESTResourceCollector.resource

But if we remove the path prefixes and only reference the file, the navigation works (but our tests will fail because the location is not correct)
Resource RESTResourceCollector.resource

Is this a bug or am I doing something wrong in my project setup ?

IF - END sequence break next keyword line above

I noticed that keyword's navigation is not usable with a ctrl + mouse click when the previous keyword end with the "END" keyword. The example below is on the screen.
The code is working, but the syntax is broken, and the keyword is not well formatted in orange color. The first letter is white, the next are yellow.

if_end

initializing a Library using WITH NAME abc fail to autocomplete keywords

If i have a library called RobotLibIsBest and i init it as follows:

*** Settings ***
Library RobotLibIsBest

Then the keywords autocomplete in intellij with pycharm plugin with out any problems. However if init takes on the WITH NAME form then autocomplete does not work. Also not it is possible to init with params.

*** Settings ***
Library RobotLibIsBest WITH NAME mylib

then

in the *.robot file if i type

*** Test Cases ***
mylib.(tab) ----> nothing happens however it is still recognizing keywords with out mylib. prefix. This causes an issue if i initialize two lib instances with different arguments and then i have no way to actually call either instance.

Tab lengths are not dynamic for multiline alignment

Pressing Tab results in a strict tab length no matter what. Other plugins allow dynamic tab length to help align keywords
Ex.

Keyword One    ArgumentOne
Keyword Two    ArgumentOne
Keyword Three    ArgumentOne
Keyword Four    ArgumentOne

Because the keywords are different lengths, pressing tab results in misaligned arguments. When pressing tab a second time

Keyword One        ArgumentOne
Keyword Two        ArgumentOne
Keyword Three        ArgumentOne
Keyword Four        ArgumentOne

The same number of spaces are used for the tab. It would be better if the length of the tab was changed dynamically to align the arguments such that the second tab would result in this

Keyword One       ArgumentOne
Keyword Two       ArgumentOne
Keyword Three     ArgumentOne
Keyword Four      ArgumentOne

Support with .txt test case in Run Configuration

Robot Framework's latest default support for.txt packages is no longer available, but it is still possible to enable the txt suite support of previous versions through the --extension robot:txt format,

I noticed Hyper temporarily unable to support it (for TXT format binding for robot in pycharm file type, automatic completion works, Run Configuration not work unfortunately)
Suggest add the --extension parameter to the every new run configuration by default to enable support for the.txt suite of use cases (forward compatibility)
image
--extension robot:txt --test "package.childpackage.case.

multiline code block collapse/expand

the plugin provides a decent code collapse/expand capabilities on Sections & Tests but for not for multi line sections. Example:

*** Test Cases *** # Collapsible
My Fav Test # Collapsible
&{var} = Create Dictionary # ======> Not Collapsible
... A=1
... B=2

'# blah blah blah # ===========> Not Collapsible - comment block
'# 123
'# xyz

IllegalStateException in Goland

Hi,

I'm constantly getting this error in Goland (plugin version 0.1.5) on Mac:

java.lang.IllegalStateException: TextAttributeKey(name:'HEADING', fallbackAttributeKey:'DEFAULT_STRING') was already registered with the other fallback attribute key: DEFAULT_KEYWORD at com.intellij.openapi.editor.colors.TextAttributesKey.mergeKeys(TextAttributesKey.java:226) at com.intellij.openapi.editor.colors.TextAttributesKey.lambda$getOrCreate$4(TextAttributesKey.java:212) at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1940) at com.intellij.openapi.editor.colors.TextAttributesKey.getOrCreate(TextAttributesKey.java:212) at com.intellij.openapi.editor.colors.TextAttributesKey.createTextAttributesKey(TextAttributesKey.java:199) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.RobotHighlighter.(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.ide.config.RobotColorsPage.(Unknown Source) at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method) at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:950) at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.instantiateClass(XmlExtensionAdapter.kt:79) at com.intellij.openapi.extensions.impl.XmlExtensionAdapter$SimpleConstructorInjectionAdapter.instantiateClass(XmlExtensionAdapter.kt:90) at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:50) at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.kt:31) at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:473) at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:421) at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensions(ExtensionPointImpl.java:264) at com.intellij.openapi.extensions.ExtensionPointName.getExtensions(ExtensionPointName.java:35) at com.intellij.openapi.options.colors.pages.ColorSettingsPagesImpl.getRegisteredPages(ColorSettingsPagesImpl.java:33) at com.intellij.application.options.colors.ColorAndFontOptions.initPluggedDescriptions(ColorAndFontOptions.java:537) at com.intellij.application.options.colors.ColorAndFontOptions.initScheme(ColorAndFontOptions.java:529) at com.intellij.application.options.colors.ColorAndFontOptions.initAll(ColorAndFontOptions.java:513) at com.intellij.application.options.colors.ColorAndFontOptions.buildConfigurables(ColorAndFontOptions.java:375) at com.intellij.openapi.options.SearchableConfigurable$Parent$Abstract.getConfigurables(SearchableConfigurable.java:75) at com.intellij.openapi.options.ex.ConfigurableWrapper$CompositeWrapper.getConfigurables(ConfigurableWrapper.java:287) at com.intellij.openapi.options.ex.EpBasedConfigurableGroupKt.collect(EpBasedConfigurableGroup.kt:149) at com.intellij.openapi.options.ex.EpBasedConfigurableGroupKt.collect(EpBasedConfigurableGroup.kt:158) at com.intellij.openapi.options.ex.EpBasedConfigurableGroupKt.access$collect(EpBasedConfigurableGroup.kt:1) at com.intellij.openapi.options.ex.EpBasedConfigurableGroup.(EpBasedConfigurableGroup.kt:111) at com.intellij.openapi.options.ex.ConfigurableExtensionPointUtil.getConfigurableGroup(ConfigurableExtensionPointUtil.java:115) at com.intellij.ide.actions.ShowSettingsUtilImpl.getConfigurableGroups(ShowSettingsUtilImpl.java:53) at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:60) at com.intellij.ui.mac.MacOSApplicationProvider$Worker.initMacApplication$lambda$2$lambda$1(MacOSApplicationProvider.kt:71) at com.intellij.ui.mac.MacOSApplicationProvider$Worker.submit$lambda$6(MacOSApplicationProvider.kt:170) at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209) at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21) at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838) at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:454) at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:74) at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:114) at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:36) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

Keywords prefixed by resource/library don't offer automcomplete

If I have an imported resource file, I'm not getting code completion hints when using the resource.keyword notation, e.g.

*** Settings ***
Library Collections
Resource my_resource.resource

*** Keywords ***
my_resource.my_keyword
${myList} create list
Collections.log list ${myList}

In the above, I'm not getting code completion when entering my_resource, or when entering Collections into the pycharm IDE.

Plugin does not recognize keywords for my project

In my project, the plugin does not recognize the keywords listed within the Test Cases section. However, if I open a separate Robot Framework project the plugin works just fine. It seems to a project-specific problem and I can't seem to figure out why that is the case

PyCharm: 2023.3.5 Community Edition
Pyenv: 2.3.36
Python: 3.11.1
Poetry: 1.8.2

I use Poetry to manage and run the project's test cases.

[Pycharm] Resource with variables in path is not navigable on click

In my project, we are doing iOS and Android tests, so we include resources depending on which platform's device we are testing. To do so, when using the Resource to import a file, we use a platform variable.

However, even if I fixed the platform's value in the variables section, the plugin cannot import the Keywords included in the resource. So the navigation when clicking on the keyword from my test case does not work (i.e. Go To > Declaration or Usage).

Like shown below, if I use ./Resources/Android/Login.robot it works, but not with ./Resources/${platform}/Login.robot

*** Settings ***
Resource      ./Resources/${platform}/Login.robot
#Resource      ./Resources/Android/Login.robot

*** Variables ***
${platform} Android

Short name 'RobotKeywordNotFound' is not unique class in pycharm 2022.02.1

I see this exception on IDE starting and later

com.intellij.diagnostic.PluginException: Short name 'RobotKeywordNotFound' is not unique class 'com.github.jnhyperion.hyperrobotframeworkplugin.ide.inspections.compilation.RobotKeywordNotFound' in PluginDescriptor(name=Hyper RobotFramework Support, id=com.github.jnhyperion.hyperrobotframeworkplugin, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\PyCharmCE2022.2\plugins\Hyper RobotFramework Support, version=0.0.8, package=null, isBundled=false) and class 'com.millennialmedia.intellibot.ide.inspections.compilation.RobotKeywordNotFound' in PluginDescriptor(name=IntelliBot #patched, id=com.millennialmedia.intellibot@lte2000, descriptorPath=plugin.xml, path=~\AppData\Roaming\JetBrains\PyCharmCE2022.2\plugins\intellibot.jar, version=0.14.191.8026, package=null, isBundled=false) conflict at com.intellij.codeInspection.ex.InspectionToolRegistrarKt.checkForDuplicateShortName(InspectionToolRegistrar.kt:178) at com.intellij.codeInspection.ex.InspectionToolRegistrarKt.registerInspection(InspectionToolRegistrar.kt:137) at com.intellij.codeInspection.ex.InspectionToolRegistrarKt.access$registerInspection(InspectionToolRegistrar.kt:1) at com.intellij.codeInspection.ex.InspectionToolRegistrar.registerInspections(InspectionToolRegistrar.kt:69) at com.intellij.codeInspection.ex.InspectionToolRegistrar.<init>(InspectionToolRegistrar.kt:51) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:844) at com.intellij.serviceContainer.ComponentManagerImpl.createLightService(ComponentManagerImpl.kt:823) at com.intellij.serviceContainer.ComponentManagerImpl.access$createLightService(ComponentManagerImpl.kt:55) at com.intellij.serviceContainer.ComponentManagerImpl$getOrCreateLightService$$inlined$synchronized$lambda$1.run(ComponentManagerImpl.kt:673) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:223) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:238) at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:222) at com.intellij.serviceContainer.ComponentManagerImpl.getOrCreateLightService(ComponentManagerImpl.kt:672) at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:621) at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:583) at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37) at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22) at com.intellij.codeInspection.ex.InspectionToolRegistrar$Companion.getInstance(InspectionToolRegistrar.kt:209) at com.intellij.profile.codeInspection.ProjectInspectionProfileManager.getCurrentProfile(ProjectInspectionProfileManager.kt:236) at com.intellij.configurationScript.inspection.ExternallyConfigurableProjectInspectionProfileManager.getCurrentProfile(ExternallyConfigurableProjectInspectionProfileManager.kt:75) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.<init>(LocalInspectionsPass.java:84) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPassFactory$MyLocalInspectionsPass.<init>(LocalInspectionsPassFactory.java:54) at com.intellij.codeInsight.daemon.impl.LocalInspectionsPassFactory.createHighlightingPass(LocalInspectionsPassFactory.java:36) at com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarImpl.instantiatePasses(TextEditorHighlightingPassRegistrarImpl.java:190) at com.intellij.codeInsight.daemon.impl.TextEditorBackgroundHighlighter.getPasses(TextEditorBackgroundHighlighter.java:75) at com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl.lambda$submitInBackground$18(DaemonCodeAnalyzerImpl.java:1021) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:941) at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:68) at com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl.lambda$submitInBackground$19(DaemonCodeAnalyzerImpl.java:1012) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl.submitInBackground(DaemonCodeAnalyzerImpl.java:1004) at com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl.lambda$queuePassesCreation$14(DaemonCodeAnalyzerImpl.java:952) at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:184) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)

Import behavior for some Libraries differs from Vers. < 0.1.2

Hello,
After the Fix for Relative Path on Windows Machines #20 some Libraries that are used Imports Different then before.

For Example:

  • robotframework-browser
  • DateTime

For Both Libs the Import different.
DateTime is a Standard Lib and before Ver. 0.1.2 it is Possible to use the Keywords from suggestion, when i import it under Settings as
*** Settings ***
Library robot.libraries.DateTime

The Browser Lib, an external Library, I can use
*** Settings ***
Library Browser
And i can use the suggested Keywords.

After Vers. 0.1.2
DateTime Lib can now be imported normal
*** Settings ***
Library DateTime
but for the Browser Lib I can't find another way to Import it, that I can use suggested Keywords.

Maybe it is a new Bug, that comes from the Change for the Fix of #20

Navigation doesn't work when last keyword word is a variable

When the last keyword word is a variable, navigation to the keyword's definition (ctrl + mouse click) doesn't work.
Example (doesn't work):
Calibration step for ${color}
image

But when I add some word at the end it works
Example (does work)
Calibration step for ${color} foo
image
This also works even when the keyword definition is "Calibration step for ${color}" (without foo at the end). But somehow the 'foo' enables us to navigate to this keyword. But when I place the mouse on the text before the ${color} variable navigation still doesn't work, even with 'foo' at the end.

It looks like if there is no variable at the end navigation works fine. Still, with the variable at the end, navigation doesn't see this variable as part of the keyword, and navigation is broken.
But when a variable is in the middle of a keyword it again sees a keyword as correct (in the form of navigation)

Add support for VAR syntax (framework 7)

The var syntax added in Robot Framework 7 would be a great addition to the plugin.

Currently, attempting to use that syntax reports keyword definition not found... would be really nice to see this supported.

Class variables not recognized and don't autofill

Variables that are defined in a class aren't recognized or autofilled when writing test cases in robot. I created multiple files with various classes to organize my locator variables but they are all unrecognized in robot files. Everything runs fine and tests pass, its just much harder to write and figure if a variable actually does not exist.

Test.robot:

Testing
	[Documentation]    Testing Stuff
	Open Test Application
	Tap Element    ${WelcomeScreen.iAgree_button}
	Tap Element    ${LetsGetStartedScreen.setupNow_button}
Locators.py:

class WelcomeScreen:
    EULAPrivacy_link = "//android.view.ViewGroup/android.widget.TextView[2]"
    iAgree_button = "IAgreeButton"
    debugSettings_button = "//android.view.ViewGroup/android.view.ViewGroup/android.widget.ImageButton"

class LetsGetStartedScreen:
    setupNow_button = "SetupButton"
    tutorial_button = "TutorialButton"

In this case ${WelcomeScreen.iAgree_button} and ${LetsGetStartedScreen.setupNow_button} won't autofill and display an unknown variable in the editor.

Can't found the Library Selenium2Library's keywords' definition

Hi, I new a robot file and add the Selenium2Library Library, but it shows 'keyword definition not found' when I move the mouse over "Click Element" , one of the keyword of Library Selenium2Library.
eg:
*** Settings ***
Library Selenium2Library
*** Keywords ***
eg1
Click Element some_element

Plugin not work

Hi, I installed from PyCharm market, but it seems the plugin is not working, there is no syntax hight and so on.

PyCharm version: PyCharm 2022.1.2 (Community Edition)
System: macOS Catalina
Python: 3.7.1
Robot: 4.0

Navigation with left mouse click + CTRL doesn't work in version 0.0.6

Hi,
After upgrading to version 0.0.6 keyword navigation doesn't work. Before I was able to click keyword with CTRL and navigate to its implementation - now it doesn't work. I have information "No usages in All Places". With version 0.0.5 it works fine.

image

My environment:
Windows 10
Python 3.10.2
PyCharm 2021.3.3 Community Edition (I can't update because I have some other plugin that won't work with the newest version (Robot Framework Support))

Issue with navigation using environment variable

Hi,

When referencing a resource/variable/library, if i use an absolute/relative path (for example
Library ../../global_variables/simuInfos.py

Navigation is working well (we can navigate to file, also keywords from this file are known) and it is ok at runtime.

If i'm using an environment variable (set at computer or at pycharm level), the IDE does not recognize it (variable not found) so there is no navigation to file/keywords.
However, it is still working at runtime.

(issue similar to this in other robot framework : https://forum.robotframework.org/t/keywords-not-recognized/5041/6 )
robocorp/robotframework-lsp#548

Thanks

Plugin not working after updating pycharm to 2022.2

Hello everyone, I am unable to use the plugin after updating/upgrading Pycharm i get this log:
com.intellij.ide.plugins.StartupAbortedException: Fatal error initializing 'com.intellij.psi.stubs.StubUpdatingIndex' at com.intellij.serviceContainer.ComponentManagerImplKt.handleComponentError(ComponentManagerImpl.kt:1460) at com.intellij.util.indexing.FileBasedIndexDataInitialization.lambda$initAssociatedDataForExtensions$0(FileBasedIndexDataInitialization.java:93) at com.intellij.util.indexing.IndexDataInitializer.executeTask(IndexDataInitializer.kt:80) at com.intellij.util.indexing.IndexDataInitializer.access$executeTask(IndexDataInitializer.kt:15) at com.intellij.util.indexing.IndexDataInitializer$runParallelTasks$1$1.run(IndexDataInitializer.kt:52) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241) at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31) at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214) at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212) at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: com.intellij.diagnostic.PluginException: Cannot create class com.github.jnhyperion.hyperrobotframeworkplugin.psi.RobotParserDefinition (classloader=PluginClassLoader(plugin=PluginDescriptor(name=Hyper RobotFramework Support, id=com.github.jnhyperion.hyperrobotframeworkplugin, descriptorPath=plugin.xml, path=~/Library/Application Support/JetBrains/PyCharmCE2022.2/plugins/Hyper RobotFramework Support, version=0.0.5, package=null, isBundled=false), packagePrefix=null, instanceId=68, state=active)) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:883) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:900) at com.intellij.serviceContainer.LazyExtensionInstance.createInstance(LazyExtensionInstance.java:55) at com.intellij.serviceContainer.LazyExtensionInstance.getInstance(LazyExtensionInstance.java:44) at com.intellij.serviceContainer.BaseKeyedLazyInstance.getInstance(BaseKeyedLazyInstance.java:38) at com.intellij.psi.stubs.StubUpdatingIndex.getExtensions(StubUpdatingIndex.java:406) at com.intellij.psi.stubs.StubUpdatingIndex.instantiateElementTypesFromFields(StubUpdatingIndex.java:399) at com.intellij.psi.stubs.StubUpdatingIndex.lambda$ensureSerializationManagerInitialized$0(StubUpdatingIndex.java:389) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeNonCancelableSection$3(CoreProgressManager.java:223) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639) at com.intellij.openapi.progress.impl.CoreProgressManager.computeInNonCancelableSection(CoreProgressManager.java:238) at com.intellij.openapi.progress.impl.CoreProgressManager.executeNonCancelableSection(CoreProgressManager.java:222) at com.intellij.psi.stubs.StubUpdatingIndex.ensureSerializationManagerInitialized(StubUpdatingIndex.java:388) at com.intellij.psi.stubs.StubUpdatingIndex.getValueExternalizer(StubUpdatingIndex.java:301) at com.intellij.util.indexing.impl.storage.DefaultIndexStorageLayout.createIndexStorage(DefaultIndexStorageLayout.kt:74) at com.intellij.util.indexing.impl.storage.DefaultIndexStorageLayout$SingleEntryStorageLayout.openIndexStorage(DefaultIndexStorageLayout.kt:168) at com.intellij.psi.stubs.StubUpdatingIndex$3.openIndexStorage(StubUpdatingIndex.java:348) at com.intellij.util.indexing.impl.storage.TransientFileContentIndex$1.openIndexStorage(TransientFileContentIndex.java:43) at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.lambda$new$0(VfsAwareMapReduceIndex.java:68) at com.intellij.util.indexing.impl.MapReduceIndex.<init>(MapReduceIndex.java:74) at com.intellij.util.indexing.storage.MapReduceIndexBase.<init>(MapReduceIndexBase.java:42) at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.<init>(VfsAwareMapReduceIndex.java:81) at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.<init>(VfsAwareMapReduceIndex.java:67) at com.intellij.util.indexing.impl.storage.TransientFileContentIndex.<init>(TransientFileContentIndex.java:39) at com.intellij.psi.stubs.StubUpdatingIndexStorage.<init>(StubUpdatingIndexStorage.java:34) at com.intellij.psi.stubs.StubUpdatableIndexFactoryImpl.createIndex(StubUpdatableIndexFactoryImpl.java:20) at com.intellij.psi.stubs.StubUpdatingIndex.createIndexImplementation(StubUpdatingIndex.java:340) at com.intellij.util.indexing.FileBasedIndexImpl.createIndex(FileBasedIndexImpl.java:575) at com.intellij.util.indexing.FileBasedIndexImpl.initIndexStorage(FileBasedIndexImpl.java:494) at com.intellij.util.indexing.FileBasedIndexImpl.registerIndexer(FileBasedIndexImpl.java:453) at com.intellij.util.indexing.FileBasedIndexDataInitialization.lambda$initAssociatedDataForExtensions$0(FileBasedIndexDataInitialization.java:84) ... 17 more Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.github.jnhyperion.hyperrobotframeworkplugin.psi.RobotParserDefinition at java.base/jdk.internal.misc.Unsafe.allocateInstance(Native Method) at java.base/java.lang.invoke.DirectMethodHandle.allocateInstance(DirectMethodHandle.java:520) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClass(ComponentManagerImpl.kt:844) ... 48 more

my local environment:

MacOS Monterey 12.4
Pycharm 2022.2
Python 3.9.13

The browser window will be closed when the case runs finished

Hi,I run the test case in pycharm and the browser window will be closed when the case runs finished.
I have tried add options "add_experimental_option("detach", True)" when open the browser but it didn't work.
There is no setdown or close browser sentense in my case.
I want to know if you have the problem and glad to hear from you, thanks.

Plugin not working with IntelliJ IDEA 2024.1 (Community Edition)

Hello,

I'm getting the below exception when the plugin is enabled since I upgraded my IDE to 2024.1.
It's messing up the unit test feature as a side effect.

RunContextAction#presentation@ProjectViewPopup (com.intellij.execution.actions.RunContextAction), actionId=RunClass, text='Run context configuration'

com.intellij.diagnostic.PluginException: Class com.jetbrains.python.run.PythonRunConfiguration must not be requested from main classloader of PythonCore plugin. Matches content module (packagePrefix=com.jetbrains.python., moduleName=intellij.python.community.impl). [Plugin: com.github.jnhyperion.hyperrobotframeworkplugin]
at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.kt:203)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:151)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at java.base/java.lang.ClassLoader.defineClass2(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1108)
at com.intellij.util.lang.UrlClassLoader.consumeClassData(UrlClassLoader.java:291)
at com.intellij.util.lang.ZipResourceFile.findClass(ZipResourceFile.java:116)
at com.intellij.util.lang.JarLoader.findClass(JarLoader.java:58)
at com.intellij.util.lang.ClassPath.findClassInLoader(ClassPath.java:240)
at com.intellij.util.lang.ClassPath.findClass(ClassPath.java:190)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClassInsideSelf(PluginClassLoader.kt:326)
at com.intellij.ide.plugins.cl.PluginClassLoader.tryLoadingClass(PluginClassLoader.kt:178)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:151)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
at com.github.jnhyperion.hyperrobotframeworkplugin.ide.execution.RobotConfigurationFactory.createTemplateConfiguration(Unknown Source)
at com.intellij.execution.configurations.ConfigurationFactory.createTemplateConfiguration(ConfigurationFactory.java:67)
at com.intellij.execution.impl.RunManagerImpl.createTemplateSettings$intellij_platform_execution_impl(RunManagerImpl.kt:361)
at com.intellij.execution.impl.RunManagerImpl.getConfigurationTemplate(RunManagerImpl.kt:353)
at com.intellij.execution.impl.RunManagerImpl.createConfiguration(RunManagerImpl.kt:278)
at com.intellij.execution.actions.RunConfigurationProducer.cloneTemplateConfigurationStatic(RunConfigurationProducer.java:252)
at com.intellij.execution.actions.RunConfigurationProducer.cloneTemplateConfiguration(RunConfigurationProducer.java:243)
at com.intellij.execution.actions.RunConfigurationProducer.createConfigurationFromContext(RunConfigurationProducer.java:95)
at com.intellij.execution.actions.RunConfigurationProducer.findOrCreateConfigurationFromContext(RunConfigurationProducer.java:195)
at com.intellij.execution.actions.PreferredProducerFind.doGetConfigurationsFromContext(PreferredProducerFind.java:118)
at com.intellij.execution.actions.PreferredProducerFind.getConfigurationsFromContext(PreferredProducerFind.java:100)
at com.intellij.execution.actions.ConfigurationContext.getConfigurationsFromContext(ConfigurationContext.java:415)
at com.intellij.execution.actions.ConfigurationContext.findPreferredConfiguration(ConfigurationContext.java:299)
at com.intellij.execution.actions.ConfigurationContext.findExisting(ConfigurationContext.java:293)
at com.intellij.execution.actions.ConfigurationContext.lambda$getFromEvent$0(ConfigurationContext.java:75)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$UpdateSessionImpl$sharedData$1$1.invoke(ActionUpdater.kt:659)
at com.intellij.openapi.application.rw.InternalReadAction.insideReadAction(InternalReadAction.kt:108)
at com.intellij.openapi.application.rw.InternalReadAction.access$insideReadAction(InternalReadAction.kt:16)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$2.invoke(InternalReadAction.kt:95)
at com.intellij.openapi.application.rw.InternalReadAction$tryReadCancellable$2.invoke(InternalReadAction.kt:94)
at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$1.invoke$lambda$1$lambda$0(cancellableReadAction.kt:38)
at com.intellij.openapi.application.impl.RwLockHolder.tryRunReadAction(RwLockHolder.kt:310)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:958)
at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$1.invoke$lambda$1(cancellableReadAction.kt:36)
at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:66)
at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:155)
at com.intellij.openapi.application.rw.CancellableReadActionKt$cancellableReadActionInternal$1.invoke(cancellableReadAction.kt:34)
at com.intellij.openapi.progress.CoroutinesKt.blockingContextInner(coroutines.kt:320)
at com.intellij.openapi.progress.CoroutinesKt.blockingContext(coroutines.kt:309)
at com.intellij.openapi.application.rw.CancellableReadActionKt.cancellableReadActionInternal(cancellableReadAction.kt:31)
at com.intellij.openapi.application.rw.InternalReadAction.tryReadCancellable(InternalReadAction.kt:94)
at com.intellij.openapi.application.rw.InternalReadAction.tryReadAction(InternalReadAction.kt:78)
at com.intellij.openapi.application.rw.InternalReadAction.readLoop(InternalReadAction.kt:65)
at com.intellij.openapi.application.rw.InternalReadAction.access$readLoop(InternalReadAction.kt:16)
at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$3.invokeSuspend(InternalReadAction.kt:36)
at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$3.invoke(InternalReadAction.kt)
at com.intellij.openapi.application.rw.InternalReadAction$runReadAction$3.invoke(InternalReadAction.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at com.intellij.openapi.application.rw.InternalReadAction.runReadAction(InternalReadAction.kt:35)
at com.intellij.openapi.application.rw.PlatformReadWriteActionSupport.executeReadAction(PlatformReadWriteActionSupport.kt:38)
at com.intellij.openapi.application.ReadWriteActionSupport.executeReadAction$default(ReadWriteActionSupport.kt:15)
at com.intellij.openapi.application.CoroutinesKt.constrainedReadActionUndispatched(coroutines.kt:82)
at com.intellij.openapi.application.CoroutinesKt.readActionUndispatched(coroutines.kt:69)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$UpdateSessionImpl$sharedData$1.invokeSuspend(ActionUpdater.kt:862)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$UpdateSessionImpl$sharedData$1.invoke(ActionUpdater.kt)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$UpdateSessionImpl$sharedData$1.invoke(ActionUpdater.kt)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$getSessionDataDeferred$2$1$invokeSuspend$$inlined$useWithScope$1.invokeSuspend(trace.kt:149)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$getSessionDataDeferred$2$1$invokeSuspend$$inlined$useWithScope$1.invoke(trace.kt)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$getSessionDataDeferred$2$1$invokeSuspend$$inlined$useWithScope$1.invoke(trace.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:167)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at com.intellij.openapi.actionSystem.impl.ActionUpdater$getSessionDataDeferred$2$1.invokeSuspend(ActionUpdater.kt:862)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)

How to specify global run options

Hi,
My tests need to specify a lot of public run options, for example tests need to specify which environment will be used before running by adding a custom variable -v env:uat. It can be specified in every test run configuration, but is there a way to specify these public options in a global place? So these options will be specified only once.
Thanks.

[PyCharm] Plugin is not loading properly: RobotKeywordNotFound

I ran PyCharm today and got this error, everything was working yesterday.
PyCharm version: PyCharm 2022.3.2 (Professional Edition) Build #PY-223.8617.48, built on January 24, 2023

com.intellij.diagnostic.PluginException: Inspection #RobotKeywordNotFound has no description [Plugin: com.github.jnhyperion.hyperrobotframeworkplugin]
	at com.intellij.codeInspection.ui.InspectionNodeInfo.<init>(InspectionNodeInfo.java:71)
	at com.intellij.codeInspection.ui.InspectionResultsView.createBaseRightComponentFor(InspectionResultsView.java:487)
	at com.intellij.codeInspection.ui.InspectionResultsView.showInRightPanel(InspectionResultsView.java:410)
	at com.intellij.codeInspection.ui.InspectionResultsView.syncRightPanel(InspectionResultsView.java:324)
	at com.intellij.codeInspection.ui.InspectionTree$2.lambda$process$0(InspectionTree.java:125)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

[PyCharm] Import file not found

After plugin update from 0.1.5 to 0.1.7 it doesn't recognize Resource imports.

Resource that contain keywords are imported correctly, only those with only Variables don't work.

Resource file only with vartiables example:

*** Variables ***

${top_menu_login_xpath}                 //div[@class="top-menu-wrapper"]//a[contains(@href,"login")]

Dynamically set Test Variables not found

I am aware this might be a little bit controversial, but... it works in another Robot plugin, so I'll give it a shot :D

*** Test Cases ***
Test1
    Test1 Setup
    Log To Console    ${NICE}
    
*** Keywords ***
Test1 Setup
    Set Test Variable    ${NICE}  very nice

image

Is this expected?
Suite and Global variables behave the same way.

Support multiple suites execution

Hi,
I have a suite folder that contains some robot test suite files in it, can you support run all the tests in the folder?
Is there a way to execute all tests in testsuite1.robot and testsuite2.robot as below?

testsuites(folder)
-- testsuite1.robot
-- testsuite2.robot

Thanks!

Cannot distinguish StubFileElementTypes

Hello.

PyCharm: 2023.1.1
HyperRobotFrameworkPlugin: 0.1.10

I get an Issue in my Environment only after Starting PyCharm and when I change a Line.

java.lang.Throwable: Cannot distinguish StubFileElementTypes. This might worsen the performance. Providing unique externalId or adding a distinctive debugName when instantiating StubFileElementTypes can help. Version: psi.file:0:FILE -> [com.intellij.psi.tree.IStubFileElementType{psi.file;FILE;Language: Robot}, com.intellij.psi.tree.IStubFileElementType{psi.file;FILE;Language: ANY}] at com.intellij.openapi.diagnostic.Logger.error(Logger.java:202) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.lambda$determinePreviousFileElementType$8(PerFileElementTypeStubModificationTracker.java:203) at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1916) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.determinePreviousFileElementType(PerFileElementTypeStubModificationTracker.java:199) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.fastCheck(PerFileElementTypeStubModificationTracker.java:101) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.lambda$endUpdatesBatch$2(PerFileElementTypeStubModificationTracker.java:76) at com.intellij.openapi.application.ReadAction.lambda$run$1(ReadAction.java:60) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:891) at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:69) at com.intellij.openapi.application.ReadAction.run(ReadAction.java:59) at com.intellij.psi.stubs.PerFileElementTypeStubModificationTracker.endUpdatesBatch(PerFileElementTypeStubModificationTracker.java:75) at com.intellij.util.indexing.events.ChangedFilesCollector$4.endBatch(ChangedFilesCollector.java:246) at com.intellij.util.indexing.events.ChangedFilesCollector$5.lambda$endBatch$2(ChangedFilesCollector.java:283) at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:258) at com.intellij.util.indexing.events.ChangedFilesCollector$5.endBatch(ChangedFilesCollector.java:282) at com.intellij.util.indexing.events.VfsEventsMerger.processChanges(VfsEventsMerger.java:109) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesInReadAction(ChangedFilesCollector.java:265) at com.intellij.util.indexing.events.ChangedFilesCollector.processFilesToUpdateInReadAction(ChangedFilesCollector.java:224) at com.intellij.util.indexing.events.ChangedFilesCollector.ensureUpToDate(ChangedFilesCollector.java:190) at com.intellij.util.indexing.FileBasedIndexImpl.ensureUpToDate(FileBasedIndexImpl.java:836) at com.intellij.psi.stubs.StubIndexEx.getContainingIds(StubIndexEx.java:365) at com.intellij.psi.stubs.StubIndexEx.processElements(StubIndexEx.java:166) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:102) at com.intellij.psi.stubs.StubIndex.getElements(StubIndex.java:90) at com.jetbrains.python.psi.stubs.PyClassNameIndex.find(PyClassNameIndex.java:28) at com.jetbrains.python.psi.stubs.PyClassNameIndex.find(PyClassNameIndex.java:35) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.PythonResolver.d(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.PythonResolver.c(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.HeadingImpl.f(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.element.RobotFileImpl.a(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.ResolverUtils.a(Unknown Source) at com.github.jnhyperion.hyperrobotframeworkplugin.psi.ref.RobotArgumentReference.resolve(Unknown Source) at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:176) at com.intellij.codeInsight.TargetElementUtilBase.doGetReferenceOrReferencedElement(TargetElementUtilBase.java:164) at com.intellij.codeInsight.TargetElementUtilBase.getReferenceOrReferencedElement(TargetElementUtilBase.java:209) at com.intellij.codeInsight.TargetElementUtilBase.getReferencedElement(TargetElementUtilBase.java:253) at com.intellij.codeInsight.TargetElementUtilBase.doFindTargetElement(TargetElementUtilBase.java:232) at com.intellij.codeInsight.TargetElementUtilBase.findTargetElement(TargetElementUtilBase.java:297) at com.intellij.codeInsight.TargetElementUtil.findTargetElement(TargetElementUtil.java:147) at com.intellij.model.psi.impl.TargetsKt.fromTargetEvaluator(targets.kt:175) at com.intellij.model.psi.impl.TargetsKt.declarationsOrReferences(targets.kt:136) at com.intellij.model.psi.impl.TargetsKt.declaredReferencedData(targets.kt:42) at com.intellij.model.psi.impl.TargetsKt.targetSymbols(targets.kt:24) at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.getTargetSymbols(IdentifierHighlighterPass.java:202) at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.highlightReferencesAndDeclarations(IdentifierHighlighterPass.java:194) at com.intellij.codeInsight.daemon.impl.IdentifierHighlighterPass.doCollectInformation(IdentifierHighlighterPass.java:91) at com.intellij.codeInsight.highlighting.BackgroundHighlighter.lambda$submitIdentifierHighlighterPass$5(BackgroundHighlighter.java:203) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor.callWrapped(NonBlockingReadActionImpl.java:746) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$OTelMonitor$MonitoredComputation.call(NonBlockingReadActionImpl.java:778) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:573) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:537) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1102) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:72) at com.intellij.openapi.progress.util.ProgressIndicatorUtilService.runActionAndCancelBeforeWrite(ProgressIndicatorUtilService.java:63) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:129) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:110) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$1(ProgressManager.java:70) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:186) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:604) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:679) at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:635) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:603) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:173) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:70) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:107) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:72) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:537) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:444) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699) at java.base/java.lang.Thread.run(Thread.java:833)

Relative Path for Imports

Hello,

I missed some updates for this Plugin for Pycharm and I tried the new Version 0.0.9 from 0.0.3.

I don't know if it is possible to set this anwhere in the Settings, but now the Imports for Library's or Resource's are a little off from the older version.

I have created some Userlibraries in my Project and to import those I have to use relative Path to the Resource

Resource ../Resource/Test.robot

Now with the Version 0.0.9, my Test can't find the Recourse anymore in my IDE. I can use

Resource Test.robot, when it is a unique name, or
Resource Resource/Test.robot

When I execute the Test in my IDE it is working good, but when I want to execute it in a CLI it can't find the Recourse anymore because it wants the Relative Paths.

I hope it is an issue and not something I miss with my settings.

Best Regards and Thanks for this good Plugin :-)

Cannot seem to generate new reports

My Setup:
I have the published plugin version 0.1.16 installed via the Pycharm Marketplace. I'm working on automation with RobotFramework using SeleniumLibrary. I'm on a Mac M1 with the latest updates. I have updated all of my interpreter packages, and have the latest brew upgrades. Pycharm is up to date. Chrome is up to date. No warnings or errors when executing the test.

My Issue:

  • Unable to generate reports for test runs executed with the Hyper tool.

Here's what I've tried:

  • This could certainly be user error. I've tried to find a way to change how the tool behaves, so that it will generate reports via: google searches, the readMe, the tool settings, and I also tried a debugger run just in case it's programmed with a different function for reports than the standard run. I had no luck with any of these methods.
  • No issues generating a report when I was using IntelliBot and the manual terminal command, so I'm wondering if this tool simply doesn't support --report, or if there is a defect, or if I'm overlooking some configuration to enable it?

Here are my repro steps:

Given I run a test (I click the 'Play' icon next to the test in the .robot file that contains the test)
And a test fails or passes
When I refresh the report.html browser tab that's already open
Then I still see an old report from 20240417
When I close and reopen the report.html
Then I still see the old report

My test runs with Chrome.

Supplemental Information from RF website:

Run tests and generate reports
To run your tests and generate reports, you can use the robot command with the --report and --log options. For example: robot --report report.html --log log.html tests This will create a report.html file that summarizes the test results and a log.html file that contains the detailed test execution information. You can also use the --output option to specify the name of the XML output file, which is needed for further processing.

Request:

Can you update the readMe to tell me how to ensure HyperRobotFrameworkPlugin generates a report for every run, or if there's a bug, would you be willing to fix it? The reporting capability is important to me. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.