import java.util.*;
import java.io.*;

public class Sol{

static class Pair implements Comparable<Pair>{
        int x;int y;
        public Pair(int x,int y) {
         
          this.x=x;this.y=y;
        }
        @Override
        public int compareTo(Pair p){return Long.compare(y,p.y); }
       
   }
static int n,m;static boolean ans=true;
static int grid[][];
static boolean visited[][];

static boolean valid(int x,int y){
   if(grid[x][y]==1 || visited[x][y])return false;
   return true;
 }

static void dfs(int x,int y){
  visited[x][y]=true;
  
  if(valid (x-1,y) ){dfs(x-1,y);}
  if(valid (x+1,y) ){dfs(x+1,y);}
  if(valid (x,y-1) ){dfs(x,y-1);}
  if(valid (x,y+1) ){dfs(x,y+1);}
   
}

public static void main(String []args){

int t=ni();

while(t-->0){
ans=true;
n=ni();m=ni();grid=new int[n+2][m+2];visited=new boolean[n+2][m+2];
for(int i=0;i<=n+1;i++){for(int j=0;j<=m+1;j++)grid[i][j]=1;}
for(int i=1;i<=n;i++){String s=ns();
      for(int j=1;j<=m;j++){
           if(s.charAt(j-1)=='.'){grid[i][j]=0;}
           else if(s.charAt(j-1)=='#'){grid[i][j]=1;}
           else if(s.charAt(j-1)=='G'){grid[i][j]=100;}
           else {grid[i][j]=-1;} 
        }
    }
for(int i=1;i<=n;i++){
      for(int j=1;j<=m;j++){
           if(grid[i][j]==-1){block(i,j);}
        }
    }

if(grid[n][m]!=1)dfs(n,m);
for(int i=1;i<=n && ans;i++){
   for(int j=1;j<=m && ans;j++){
      if(!visited[i][j] && grid[i][j]==100){ans=false;}
      if(visited[i][j] && grid[i][j]==-1)ans=false;
   }
 }

//for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){out.print(grid[i][j]+" ");}out.println();}
//for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){out.print(visited[i][j]+" ");}out.println();}

if(ans)out.println("Yes");
else out.println("No");

}out.close();}

//-----------------Utility--------------------------------------------

static void block(int i,int j){
     
     if(grid[i-1][j]!=-1 && grid[i-1][j]!=100) grid[i-1][j]=1;
     if(grid[i+1][j]!=-1 && grid[i+1][j]!=100) grid[i+1][j]=1; 
     if(grid[i][j-1]!=-1 && grid[i][j-1]!=100) grid[i][j-1]=1;
     if(grid[i][j+1]!=-1 && grid[i][j+1]!=100) grid[i][j+1]=1;
 }

static long Comb[][]=new long[405][405];
static long p2[]=new long[405];
static long inv[]=new long[405];
static long factorial[]=new long[405];
static void precomp(){

inv[0]=1;factorial[0]=1l;

for(long i=1;i<405;i++){factorial[(int)i]=i*factorial[(int)i-1];factorial[(int)i]%=mod;}

for(int i=1;i<405;i++){ inv[i]=power(factorial[i],mod-2);}

for(int i=0;i<405;i++){
 
   for(int j=0;j<=i;j++){
     Comb[i][j]=(((factorial[i]*inv[j])%mod)*inv[i-j])%mod;
   }
 }

for(int i=0;i<405;i++)p2[i]=power(2,i);

}

static int Max=Integer.MAX_VALUE; static long mod=1000000007;
static int v(char c){return (int)(c-'a')+1;}
public static long power(long x, long y )
    {
        //0^0 = 1
        long res = 1L;
        x = x%mod;
        while(y > 0)
        {
            if((y&1)==1)
                res = (res*x)%mod;
            y >>= 1;
            x = (x*x)%mod;
        }
        return res;
    }
//--------------------------------------------------------------------

static InputStream inputStream = System.in;
static OutputStream outputStream = System.out;
static FastReader in=new FastReader(inputStream);
static PrintWriter out=new PrintWriter(outputStream);

static class FastReader 
{ 
  BufferedReader br; 
  StringTokenizer st; 
 
        FastReader(InputStream is) {
            br = new BufferedReader(new InputStreamReader(is));
        }
 
  public String next() 
  { 
      while (st == null || !st.hasMoreElements()) 
      { 
          try
          { 
              st = new StringTokenizer(br.readLine()); 
          } 
          catch (IOException  e) 
          { 
              e.printStackTrace(); 
          } 
      } 
      return st.nextToken(); 
  } 
 
  public int nextInt() 
  { 
      return Integer.parseInt(next()); 
  } 
 
  public long nextLong() 
  { 
      return Long.parseLong(next()); 
  } 
 
 public  double nextDouble() 
  { 
      return Double.parseDouble(next()); 
  } 
 
 
  String nextLine() 
  { 
      String str = ""; 
      try
      { 
          str = br.readLine(); 
      } 
      catch (IOException e) 
      { 
          e.printStackTrace(); 
      } 
      return str; 
  } 
}
static int ni(){return in.nextInt();}
static long nl(){return in.nextLong();}
static String ns(){return in.nextLine();}
static int[] na(int n){int a[]=new int[n];for(int i=0;i<n;i++){a[i]=ni();} return a;}

}