import java.io.*;
import java.util.*;
 
public class d {
	public static PrintWriter out;
	public static InputReader in;
	public static int[][] arr,exit,vis;
	public static int n,m;
	public static boolean canExit(int i, int j)
	{
		if(i<0 || j<0 || i>=n || j>=m)
			return false;
		if(arr[i][j]==1)
			return false;
		if(vis[i][j]==1)
			return exit[i][j]==1;
		vis[i][j]=1;
		boolean ex = canExit(i+1,j) | canExit(i,j+1) | canExit(i-1,j) | canExit(i,j-1);
		if(ex)
		{
			mark(i+1,j);
			mark(i,j+1);
			mark(i-1,j);
			mark(i,j-1);
		}
		return ex;
	}
	public static void mark(int i, int j)
	{
		if(i>=0 && j>=0 && i<n && j<m && arr[i][j]!=1)
		{
			exit[i][j]=1;
		}
	}
	public static void main(String[] args)throws IOException {
        in = new InputReader(System.in);
        out = new PrintWriter(System.out);
        
		int cases = in.nextInt();
		for(int t = 0; t < cases; t++){
			n = in.nextInt();
			m = in.nextInt();
			arr = new int[n][m];
			exit = new int[n][m];
			vis = new int[n][m];
			for(int i=0;i<n;i++)
			{
				String s = in.next();
				for(int j=0;j<m;j++)
				{
					exit[i][j]=0;
					vis[i][j]=0;
					if(s.charAt(j)=='.')
						arr[i][j]=0;
					else if(s.charAt(j)=='#')
						arr[i][j]=1;
					else if(s.charAt(j)=='G')
						arr[i][j]=2;
					else
						arr[i][j]=3;
				}
			}
			if(n==1 && m==1 && arr[n-1][m-1]==3)
			{
				out.println("No");
				continue;
			}
			for(int i=0;i<n;i++)
			{
				for(int j=0;j<m;j++)
				{
					if(arr[i][j]==3)
					{
						if(i+1<n && arr[i+1][j]==0)
							arr[i+1][j]=1;
						if(j+1<m && arr[i][j+1]==0)
							arr[i][j+1]=1;
						if(i-1>=0 && arr[i-1][j]==0)
							arr[i-1][j]=1;
						if(j-1>=0 && arr[i][j-1]==0)
							arr[i][j-1]=1;
					}
				}
			}
			vis[n-1][m-1]=1;
			if(arr[n-1][m-1]!=1)
				exit[n-1][m-1]=1;
			// out.println("yp"+exit[n-1][m-1]);
			boolean ans = true;
			for(int i=0;i<n;i++)
			{
				for(int j=0;j<m;j++)
				{
					if(arr[i][j]==2 && !canExit(i,j))
					{
						// out.println("i="+i+"j="+j);
						ans=false;
						break;
					}
				}
			}
			if(ans)
				out.println("Yes");
			else
				out.println("No");
		}

        out.close();
	}
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public long nextLong() {
            return Long.parseLong(next());
        }

    }

}