GrailsからGebを起動するときに意図せずProxyが有効になる

大ハマリ。
FirefoxのプロセスがGebのテストの実行のたびにポコポコ増殖してひどいことになった。
最初、Firefox 17でSeleniumが動かない問題のせいかと思っていたが、16にダウングレードしても動かなかったので追求していったら原因がわかった。

結論から書くと、Grailsに設定しているProxyがGebに引き継がれてしまい、localhostにProxy経由でアクセスしようとしていたためコケていただけであった。

Grailsのドキュメントには記載がないのだが、コマンドを実行してみると--noproxyオプションで除外設定ができることがわかる。

% grails add-proxy
| Environment set to development....
| Error Usage: grails add-proxy [name] --host=[server] --port=[port] --username=[username]* --password=[word]* --noproxy=[no|proxy|hosts]*Example: grails add-proxy client --host=proxy-server --port=4300 --username=guest --password=guest --oxy=somehost|*.intra.net

既にadd-proxyで設定済みの場合は~/.grails/ProxySettings.groovyを直接書き換えてしまってよい。(私はそうした)

FirefoxDriverを生成するときにProxyの設定をしたFirefoxProfileを食わせてあげればよさそうだったがダメだった。
(Proxyを外すのではなくProxyを使う方の設定であれば効くのかもしれない。)

def profile = new FirefoxProfile()
profile.setProperty('network.proxy.type', 0)
def driver = new FirefoxDriver(profile)

Firefox 17の問題の方は追っかけていない。

参考サイト