Testing Chrome Extension with Context Menu - google-chrome

I am working on a Chrome Add On that adds context menu items using chrome.contextMenus.
I am looking to create some tests as I develop the extension to ensure proper functionality. I have looked into using Selenium and similar, but there does not seem to be the concept of interacting with the "system" context menu, only context menus which are actually JavaScript called by intercepting right clicking. The solutions for the browser's real context menu seem a bit hacky.
I am starting to look at things like autohotkey and AutoIt, but I am not sure that these are the best tools out there for this type of testing since Chrome doesn't use native Windows controls.
I see there is some work with AutoIt Chrome UDF, but I wanted to check if there was a purpose built tool that can consistently interact with the browser. I also want to check that other tabs are open, etc.
I have read How do I test a context menu entry in a Chrome Extension? -> Select an Option from the Right-Click Menu in Selenium Webdriver - Java , but I am not sure how this would work if you don't know which menu items might be present from other extensions or customizations.

Related

Chrome external application launch links

In Google Chrome, I can type the following in a new browser:
pycharm://open?file=file_name
and press Enter. The result is that PyCharm IDE will launch and open the specified file. I have also come across similar links that launch other applications.
I tried to look for information about such links but did not reach any conclusions. Specifically, I would like to know:
what is the name of such a link?
who defines those links? Since I cannot find any documentation about those links on PyCharm's side, I am led to think that those links are some form of standard command that work for every external application?
how do those links work under the hood? Is it the browser spawning a new subprocess or does the browser somehow communicate the command to the OS which takes it from there?
I can also do the above programmatically:
window.open('pycharm://open?file=file_name', '_top');
How can I ensure that the focus switches to the target application? (Right now the application does indeed start, but the focus stays on Chrome.)

Add space in the bottom of chrome dev console

Each Time I'm using this console I'm struggeling with my mouse to click on the editable line.
So two question :
Is there a way of enlarging this line so it easier to click on it ?
Is there a command to navigate to it ?
The only way to enlarge it is to create a custom theme for DevTools, enable the experiment for using custom themes, and then installing your extension. That way you can get custom CSS into the top-level DevTools scope to modify things.
You may open a bug report on the chromium issue tracker against the DevTools so the team can assess the UX to see if there is anything they should modify internally.

Hide Chrome extension button in tool bar by default

Is it possible to hide the Chrome extension button that gets added to the tool bar by default (without the user having to right click the button to hide it)?
It serves no purpose as the functionality of the extension I have created is only accessible via the right click menu.
No, because of the original reason for this behavior - making the user aware they have the extension installed.
I understand it makes little sense for new extension installation, but I doubt Chrome developers would back down on it - so a feature request is unlikely to succeed.

Is there a way to add MRU tab selection via CTRL+TAB to Google Chrome? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
This post was edited and submitted for review 11 months ago and failed to reopen the post:
Original close reason(s) were not resolved
Improve this question
I haven't been able to find an extension or built-in way to get this functionality.
I have seen a couple of hacks on the web, but none that work properly. Eg this standalone application:
https://github.com/acemtp/chrome_mru
Yes, there is a perfectly working solution.
This extension Tab Thumbnails Switcher can redefine Ctrl+Tab and Ctrl+Shift+Tab to select tabs in MRU order the same way you swich between programs with Alt+Tab in Windows.
The best part is that the tab selector box is implemented natively, so it doesn't need to inject javascript on each tab for it to work. It works reliably on all tabs.
There's also a demonstrative video here: https://www.youtube.com/watch?v=2HC7_EI8db4
Another option I just found Yesterday (and until now it seems to work very well) is: AutoControl Shortcut Manager: https://www.autocontrol.app/switch-to-last-used-tab-in-chrome#MRU-tabs
Steps:
Install chrome extension: AutoControl Shortcut Manager
Install also the required exe file: Native-Component.exe (It will be prompted to be downloaded after the extension is installed. For me it didn't require admin rights. I hope it's ok ...)
Configure the extension based on the tutorial (9 steps) from the official web page: Cycle through all tabs in MRU order
Enjoy ctrl+tab behavior :)
I was able to get the chrome_mru tool working by changing the nHotKeyChar variable from 0xde to 0xc0 (from tilde ~ to tick `) and recompiling.
Then I realized this is the same thing AutoHotkey does using this script with the Recent Tabs Chrome extension.
The AutoHotkey/Recent tabs solution is suboptimal, yes, but I think it is the best we can hope for until Chrome implements this feature (if ever /sigh).
I now found a possiblity to achieve this for users working on Windows and wrote an extension:
https://chrome.google.com/webstore/detail/ctrl%2Btab-mru/ialfjajikhdldpgcfglgndennidgkhik
Complete solution for setting up Ctrl+Tab to use MRU switching on Windows:
First download an MRU extension for Chrome. After trying a few different such extensions, I recommend Ctrl+Tab MRU. It's not perfect, but it's the best one I could find.
Next, you need to bind the hotkeys for your selected extension to a key combination. Go to chrome://extensions/, scroll down to the bottom of the page, click "Keyboard shortcuts", and find the shortcuts for the extension you selected. Unfortunately, Chrome doesn't let you bind Ctrl+Tab as a keyboard shortcut, so instead choose a combo that Chrome does let you select, like Ctrl+Q for "Switch to older tab" and Ctrl+Shift+Q for "Switch to newer tab".
Now we need to set things up so that Ctrl+Tab triggers the key combination you previously set. For that you'll need AutoHotkey. If you don't already have AutoHotkey, first download and install it from its website. Then, put the following text in an AutoHotkey script in your startup folder, at %AppData%\Microsoft\Windows\Start Menu\Programs\Startup\tabswitch.ahk (e.g. in a new text file located at C:\Users\yourusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup and named tabswitch.ahk, with no .txt extension):
; Fix for Chrome's lack of MRU tab switching.
; Use this with a decent MRU tab switching extension, like
; https://chrome.google.com/webstore/detail/ctrl%20tab-mru/ialfjajikhdldpgcfglgndennidgkhik
; Configure it to use Ctrl-Q, or change the key below.
#IfWinActive, ahk_exe chrome.exe ; If currently using Chrome
^Tab::^q
^+Tab::^+q
#IfWinActive
This remaps Ctrl+Tab and Ctrl+Shift+Tab to Ctrl+Q and Ctrl+Shift+Q, respectively, when Chrome is the currently selected Window. This will allow you to use Ctrl+Tab to switch between tabs with MRU ordering in Chrome. Don't forget to double-click the script to run it. It should start back up automatically when you reboot your computer.
There are two features enabled by Firefox's ctrltab shortcut that Chrome doesn't yet offer:
Switch to the previously used tab
Press ctrltab and then release both
Select an open tab from a menu using the keyboard
Press ctrltab but then release just tab
Press and release tab repeatedly to select older tabs in the menu
Release ctrl to switch to the selected tab
The only Chrome extension I know of that offers a facsimile of this — without requiring the unnecessarily broad Read and change all your data on the websites you visit permission and that works with tabs into which extensions can't inject code, like Chrome Webstore pages — is QuicKey (which I wrote).
QuicKey works around Chrome's limitations by using one shortcut to open the popup menu (by default, altQ on Windows), then listening for another keypress (W, right next door) to move the selection in the menu, and then waiting for the alt keyup event to switch to the selected tab.
It has to use W instead of Q (which would be the equivalent to tab in this shortcut) because pressing that with alt down would close the popup. (The popup page doesn't see that key event at all so it can't block it.) But that does mean QuicKey can use a quick double-press of altQ (or double-click of the icon) as a shortcut to toggle to the previously used tab. It does that by timing how long the popup was open, and switching tabs if the time was less than 450ms.
If you want to use ctrltab as a shortcut for switching between recent tabs in QuicKey, there's a simple, cross-platform way to do it via Chrome devtools.
I am using tab stack as a workaround until Chrome has native MRU support (crossfingers) ;)
Tab Stack (https://chrome.google.com/webstore/detail/tab-stack/gfpdghcockbpiokcaaagmnneioeopnnb) moves the current tab to the front after a brief delay. It's very simple solution that gives you kind of MRU.
Solutions above didn't work for me. Maybe b/c of an international keyboard layout.
As an alternative I would offer using FF, in it you have to set browser.ctrlTab.previews setting to true and you have an MRU behavior.
All ctrl-tab MRU options I have seen on Chrome feel like hacks / do not work reliably.
I recommend switching to latest Opera . You basically get Chrome(ium) with a few key addings (MRU tabs, but also mouse gestures).
The setting is at opera://flags/#activation-order-tab-cycling (needs restarting the browser).
Finally there is a working one:
https://chrome.google.com/webstore/detail/clut-cycle-last-used-tabs/cobieddmkhhnbeldhncnfcgcaccmehgn?hl=en
Here's a very light and intuitive solution for tabs organizing in the most recently used order, which is supported in all major browsers (Chrome, Firefox, Opera, other Chrome-based browsers): Tab Slider. Its features are:
Works just like Alt+Tab on Windows or Cmd+Tab on Mac, but with browser tabs
Visually sorts tabs so you always see them in the MRU order (Ctrl+Tab switches to the next MRU tab)
Works with pinned tabs as well
Is customizable (however, I would advise sticking with defaults)
Try it! Hope you'll love it.
For mac users you can use this extension:
chrome extension
It has a shortcut opt+y to cycle through previous tabs. And if you want to use ctrl+tab as shortcut, you can use karabiner element tool to map the opt y shortcut to ctrl tab.
the mapping i use for karabiner is like so:
{
"from": {
"key_code": "tab",
"modifiers": {
"mandatory": [
"left_control"
]
}
},
"to": [
{
"key_code": "y",
"modifiers": [
"left_option"
]
}
],
"type": "basic"
}
Yes there is a working solution available now. I found Recent Tabs extension perfect for MRU tabs solution in chrome. You can use ctrl+Q or ctrl+~ or assign your own.
Better to use http://bahoom.com/hyperswitch as jason3w suggests
My solution:
On OSX I usually want MRU switching when I want to repeatedly switch between two chrome tabs and a code editor. (For example, trello.com and localhost:3000)
In this case, I start up chrome canary which is properly treated as a separate application by OSX, and allows for a simple alt-tabbing (like windows used to), SWEET!!
https://www.google.com/chrome/browser/canary.html
Try it out, peeps. I tried the Opera solution, but just couldn't live without some of the other features of chrome. I hope Opera continues to develop.
Is there a real working solution to add MRU tab selection via CTRL+TAB
to Google Chrome?
Yes. You need to modify Your preferences file as like here:
http://forum.ru-board.com/topic.cgi?forum=5&topic=34987&start=4680#16
(change Your sequence to Ctrl+Tab and Shift+Ctrl+Tab)
Chrome does not block it. You simply cannot assigh this combination becouse of hook.. But if You edit Preferences file, it works.
It is situated near
"C:\Users\%username%\AppData\Local\Google\Chrome\User
Data\Default\Preferences"
Just found this https://github.com/acemtp/chrome_mru
Its goal is to enable you to use CTRL+TAB in Google Chrome with the
Most Recently Used (MRU) Tab behavior (and not the default
next/previous tab).
I didn't try it so far. Hope it helps
edit reason: Stopped working.
On Mac OS, the Recent Tabs extension is somehow able to reassign Ctrl+Tab to switch between two most recently used tabs out-of-the-box!
https://chrome.google.com/webstore/detail/recent-tabs/ocllfmhjhfmogablefmibmjcodggknml
The tricky solution to achieve this on Windows is to combine Quick Tabs chrome extensions and AutoHotkey script. I've described it in details here, so here is in a nutshell:
1) Quick Tabs is an open-source, customizable extension, that allows you redefine some CSS styles and allows to setup hotkey for switching MRU tabs. Also it supports keyboard navigation (move to next/previous tab). However chrome doesn't let you bind Ctrl+Tab as a keyboard shortcut, so you need to register another one (for example Ctrl+Shift+S) and then use AutoHotkey script to "remap" Ctrl+Tab for chrome into Ctrl+Shift+S.
2) I won't put here the AutoHotkey script, you can find it here. It covers Ctrl+Tab remapping and handle all the keyboard navigation.
As a result you will see something like that when press Ctrl+Tab in active chrome window:
Arrows navigation, Esc, both Ctrl+Tab and Ctrl+Shift+Tab are working the way you expected.
Best workaround I have found on mac/linux is to install a extension that sorts the tabs in MRU order*, so that ctrl+tab works the way you'd expect it to:
https://chrome.google.com/webstore/detail/tab-slider/nobaaibkcalggmjnjhnlmmcldllpogjp
* last used tab is moved to all the way to the left

How do I enable right-click (control-click) context menus in MonoDevelop?

Right Click (or control-click since I'm on a Mac) doesn't bring up the context menus for Solution or Projects.
For instance, in Visual Studio I would right click on a Solution to add a new project to the solution. I've looked all through the menu and can't find the add project command.
Also, how do I add a folder to a project? Again, this would be available from the right-click menu in VS, but I can't find it anywhere in MonoDevelop.
Control-click doesn't do anything for me in any part of MD. Not even in the text editor. Is there a setting to get it to behave the way I'm expecting it to?
Shouldn't these options also be available via the main menu also?
Apparently this was a known issue and has been fixed. It was a bug in the gtk+ library. Single button mice weren't supported.
https://bugzilla.novell.com/show_bug.cgi?id=359734
https://bugzilla.gnome.org/show_bug.cgi?id=346609
Still not sure why I'm seeing this bug now on my OSX 10.6.4 machine running the latest download of MonoDevelop.
Plugging in a 2-button mouse is an adequate work-around. I can right click and get the context menus I was looking for.
These features are where you would expect to find them, exactly where you said. The solution context menu contains Add > Add new project and the project context menu has Add > New folder
I'm on a macbook so I get to use the old double-finger tap, rather than CTRL+Clicking all the time. Not sure why the CTRL+Click is not working for you.
EDIT:
Control-Click anywhere in the solution explorer seems to bring up a context-sensitive context menu. Control-Click whilst solution is selected brings up the solution context menu and if a project is selected, the project context menu.
Control + click doesn't work but a two finger touch brings up the context menus on my Macbook Pro. Check your "Trackpad" settings in system preferences to see how you have secondary click setup on your mac.