module.exports = function( grunt ) {

	"use strict";

	grunt.registerTask( "testswarm", function( commit, configFile, projectName ) {
		var jobName, config, tests,
			testswarm = require( "testswarm" ),
			runs = {},
			done = this.async(),
			pull = /PR-(\d+)/.exec( commit );

		projectName = projectName || "jquery";
		config = grunt.file.readJSON( configFile )[ projectName ];
		tests = grunt.config([ this.name, "tests" ]);

		if ( pull ) {
			jobName = "Pull <a href='https://github.com/jquery/jquery/pull/" +
				pull[ 1 ] + "'>#" + pull[ 1 ] + "</a>";
		} else {
			jobName = "Commit <a href='https://github.com/jquery/jquery/commit/" +
				commit + "'>" + commit.substr( 0, 10 ) + "</a>";
		}

		tests.forEach(function( test ) {
			runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test;
		});

		testswarm.createClient({
			url: config.swarmUrl
		} )
		.addReporter( testswarm.reporters.cli )
		.auth( {
			id: config.authUsername,
			token: config.authToken
		})
		.addjob(
			{
				name: jobName,
				runs: runs,
				runMax: config.runMax,
				browserSets: projectName === "jquery" ?
					[ "popular", "ios" ] :
					"weekly",
				timeout: projectName === "jquery" ? 1000 * 60 * 30 : 1000 * 60 * 60 * 4
			}, function( err, passed ) {
				if ( err ) {
					grunt.log.error( err );
				}
				done( passed );
			}
		);
	});
};

@@ -1105,19 +1105,41 @@
  %22jquery
-%22 ?
+weekly%22 ?%0A%09%09%09%09%09%22weekly%22 :
 %0A%09%09%09%09%09%5B 
@@ -1160,24 +1160,8 @@
 s%22 %5D
- :%0A%09%09%09%09%09%22weekly%22
 ,%0A%09%09
@@ -1194,16 +1194,22 @@
  %22jquery
+weekly
 %22 ? 1000
@@ -1220,9 +1220,9 @@
 0 * 
-3
+6
 0 : 
@@ -1237,14 +1237,10 @@
 0 * 
-60 * 4
+30
 %0A%09%09%09

Change the timeout for the weekly job from 4h to 1h